Provided by: manpages-pl-dev_0.5-1_all bug

NAZWA

       flock - założenie lub zdjęcie doradczej blokady na otwartym pliku.

SKŁADNIA

       #include <sys/file.h>

       int flock(int fd, int operation);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Zakłada  lub  zdejmuje doradczą blokadę na otwartym pliku, określonym przez fd.  Parameter operation jest
       jednym z poniższych:

              LOCK_SH   Założenie blokady współdzielonej. Więcej niż jeden proces może ją  utrzymywać  na  danym
                        pliku w danej chwili.

              LOCK_EX   Założenie  blokady  wyłącznej.  Tylko  jeden  proces może ją utrzymywać na danym pliku w
                        danej chwili.

              LOCK_UN   Usunięcie istniejącej blokady, założonej przez bieżący proces.

       Wywołanie flock() może się zblokować, gdy inny proces utrzymuje blokadę niezgodnego  typu.   Aby  uzyskać
       wywołanie  nieblokujące,  należy  dodać  w  dowolnej  z  powyższych wartości operation LOCK_NB (za pomocą
       bitowego OR).

       Pojedynczy plik nie może mieć jednocześnie założonej blokady współdzielonej i wyłącznej.

       Blokady utworzone za pomocą flock() są skojarzone z plikiem, lub dokładniej, z wpisem w tablicy otwartych
       plików.  Oznacza to, że powielone deskryptory plików (utworzone na przyład za pomocą fork(2) lub  dup(2))
       odnoszą  się  do  tej  samej blokady i ta blokada może być zmieniana lub zwalnaina za pomocą dowolnego ze
       wspomnianych deskryptorów. Ponadto, blokada zostaje zwolniona albo w wyniku  jawnego  wykonania  operacji
       LOCK_UN na dowolnym z tych powielonych deskryptorów, albo po zamknięciu wszytkich tych deskryptorów.

       Proces  może  utrzymywać  dla  pliku  tylko jeden rodzaj blokady (współdzieloną lub wyłączną). Późniejsze
       wywołania flock() są zachowywane poprzez wywołania execve(2).

       Blokada współdzielona lub wyłączna może zostać założona na  pliku  niezależnie  od  trybu  otwarcia  tego
       pliku.

WARTOŚĆ ZWRACANA

       Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i odpowiednio ustawiane errno.

BŁĘDY

       EWOULDBLOCK
              Plik jest zablokowany, a był ustawiony znacznik LOCK_NB.

       EBADF  fd nie jest deskryptorem otwartego pliku.

       EINTR  Wywołanie  zostało  przerwane  podczas  oczekiwania  na  założenie  blokady  w wyniku doręczenia i
              przechwycenia sygnału przez procedurę jego obsługi.

       EINVAL operation jest niepoprawne.

       ENOLCK Zabrakło pamięci dla jądra na przydzielenie rekordów dla blokad.

ZGODNE Z

       4.4BSD (funkcja flock(2) pojawiła się  pierwotnie  w  4.2BSD).   Pewna  wersja  flock(2),  prawdopodobnie
       zaimplementowana w oparciu o fcntl(2), pojawia się w większości Uniksów.

UWAGI

       flock(2)  nie blokuje plików przez NFS. Należy zamiast tego korzystać z fcntl(2): ta funkcja działa przez
       NFS, o ile wersja Linuksa jest dostatecznie nowe i serwer wspiera blokowanie.

       Począwszy od jądra 2.0, flock(2) jest zaimplementowane jako samodzielna funkcja  systemowa,  zamiast  jej
       emulacji  w  bibliotece  GNU  C  za  pomocą  wywołania fcntl(2).  Daje to prawdziwą semantykę BSD: nie ma
       interakcji pomiędzy blokadami różnych typów, tworzonymi za pomocą  flock(2)  oraz  tworzonymi  za  pomocą
       fcntl(2).  flock(2) Nie wykrywa zakleszczenia blokad.

       flock(2)  tworzy  jedynie  blokady  doradcze;  proces  posiadający odpowiednie uprawnienia do pliku, może
       swobodnie zignorować fakt użycia flock(2) i wykonywac operacje we/wy na tym pliku.

       Blokady flock(2) i fcntl(2) posiadają różną semantykę  w  odniesieniu  do  rozgałęzionych  procesów  oraz
       dup(2).

ZOBACZ TAKŻE

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

       Istnieją także pliki locks.txt i mandatory.txt w /usr/src/linux/Documentation.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W  razie  zauważenia  różnic  między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 2 flock

       Prosimy  o  pomoc  w  aktualizacji  stron  man  -   więcej   informacji   można   znaleźć   pod   adresem
       http://sourceforge.net/projects/manpages-pl/.

Linux                                              2002-04-24                                           FLOCK(2)