Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       flock - zaloenie lub zdjcie doradczej blokady na otwartym pliku.

SK/LADNIA

       #include <sys/file.h>

       int flock(int fd, int operation);

OPIS

       Zaklada  lub zdejmuje doradcz blokad na otwartym pliku, okrelonym przez
       fd.  Parameter operation jest jednym z poniszych:

              LOCK_SH   Zaloenie blokady wspoldzielonej. Wicej ni jeden proces
                        moe j utrzymywa na danym pliku w danej chwili.

              LOCK_EX   Zaloenie  blokady  wylcznej.  Tylko jeden proces moe j
                        utrzymywa na danym pliku w danej chwili.

              LOCK_UN   Usunicie  istniejcej  blokady,  zaloonej  przez  biecy
                        proces.

       Wywolanie  flock()  moe  si  zblokowa, gdy inny proces utrzymuje blokad
       niezgodnego typu.  Aby  uzyska  wywolanie  nieblokujce,  naley  doda  w
       dowolnej z powyszych wartoci operation LOCK_NB (za pomoc bitowego OR).

       Pojedynczy plik nie moe mie jednoczenie zaloonej blokady wspoldzielonej
       i wylcznej.

       Blokady  utworzone  za  pomoc  flock()  s  skojarzone  z  plikiem,  lub
       dokladniej,  z  wpisem  w  tablicy  otwartych  plikow.   Oznacza  to, e
       powielone deskryptory plikow (utworzone na przylad za pomoc fork(2) lub
       dup(2))  odnosz  si  do tej samej blokady i ta blokada moe by zmieniana
       lub zwalnaina za pomoc dowolnego ze wspomnianych deskryptorow. Ponadto,
       blokada  zostaje  zwolniona  albo  w  wyniku jawnego wykonania operacji
       LOCK_UN na dowolnym z tych powielonych deskryptorow, albo po  zamkniciu
       wszytkich tych deskryptorow.

       Proces moe utrzymywa dla pliku tylko jeden rodzaj blokady (wspoldzielon
       lub  wylczn).  Poniejsze  wywolania  flock()  s   zachowywane   poprzez
       wywolania execve(2).

       Blokada wspoldzielona lub wylczna moe zosta zaloona na pliku niezalenie
       od trybu otwarcia tego pliku.

WARTO ZWRACANA

       Po pomylnym zakoczeniu zwracane jest zero. Po bldzie zwracane jest -1 i
       odpowiednio ustawiane errno.

B/LDY

       EWOULDBLOCK
              Plik jest zablokowany, a byl ustawiony znacznik LOCK_NB.

       EBADF  fd nie jest deskryptorem otwartego pliku.

       EINTR  Wywolanie  zostalo  przerwane  podczas  oczekiwania  na zaloenie
              blokady  w  wyniku  dorczenia  i  przechwycenia  sygnalu   przez
              procedur jego obslugi.

       EINVAL operation jest niepoprawne.

       ENOLCK Zabraklo pamici dla jdra na przydzielenie rekordow dla blokad.

ZGODNE Z

       4.4BSD  (funkcja  flock(2)  pojawila  si  pierwotnie  w 4.2BSD).  Pewna
       wersja flock(2), prawdopodobnie zaimplementowana w oparciu o  fcntl(2),
       pojawia si w wikszoci Uniksow.

UWAGI

       flock(2)  nie  blokuje  plikow przez NFS. Naley zamiast tego korzysta z
       fcntl(2): ta funkcja dziala  przez  NFS,  o  ile  wersja  Linuksa  jest
       dostatecznie nowe i serwer wspiera blokowanie.

       Poczwszy  od  jdra 2.0, flock(2) jest zaimplementowane jako samodzielna
       funkcja systemowa, zamiast jej emulacji w bibliotece  GNU  C  za  pomoc
       wywolania  fcntl(2).   Daje to prawdziw semantyk BSD: nie ma interakcji
       pomidzy blokadami ronych  typow,  tworzonymi  za  pomoc  flock(2)  oraz
       tworzonymi  za  pomoc  fcntl(2).   flock(2)  Nie  wykrywa zakleszczenia
       blokad.

       flock(2) tworzy jedynie blokady doradcze; proces posiadajcy odpowiednie
       uprawnienia  do  pliku,  moe  swobodnie zignorowa fakt uycia flock(2) i
       wykonywac operacje we/wy na tym pliku.

       Blokady flock(2) i fcntl(2) posiadaj  ron  semantyk  w  odniesieniu  do
       rozgalzionych procesow oraz dup(2).

ZOBACZ TAKE

       open(2), close(2), dup(2), execve(2), fcntl(2), fork(2).  lockf(3)

       Istniej      take     pliki     locks.txt     i     mandatory.txt     w
       /usr/src/linux/Documentation.

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju  Projektu  Tlumaczenia
       Manuali  i  moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem  opisywanego  programu  lub  funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.