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/.