Provided by:
manpages-pl-dev_20060617-3_all 
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.