Rechercher une page de manuel
fcntl
Langue: pl
Version: 2002-04-24 (openSuse - 09/10/07)
Section: 2 (Appels système)
Sommaire
NAZWA
fcntl - manipulacje na deskryptorze plikuSK£ADNIA
#include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);
OPIS
fcntl dokonuje jednej z wielu ró¿nych operacji na fd. Wykonywana operacja zdeterminowana jest przez cmd.Obs³uga zamkniêcia przy uruchomieniu (close-on-exec)
- F_DUPFD
- Znalezienie najni¿szego dostêpnego numeru dla deskryptora pliku, wiekszego lub równego arg i uczynienie deskryptora o tym numerze kopi± fd. Jest to inna postaæ dup2(2), korzystaj±ca z konkretnego, zadanego deskryptora.
Stare i nowe deskryptory mog± byæ u¿ywane zamiennie. Dziel± one blokady, wska¼niki pozycji pliku i flagi; na przyk³ad, je¶li pozycja pliku zostanie zmodyfikowana poprzez u¿ycie lseek na jednym z deskryptorów, zmieni siê równie¿ pozycja dla drugiego deskryptora.
Te dwa deskryptory nie wspó³dziel± jednak znacznika "zamkniêcia przy uruchomieniu" (close-on-exec). Znacznik ten dla kopii jest wyzerowany, co oznacza, ¿e kopia nie zostanie zamkniêta podczas wywo³ania exec.
Po pomy¶lnym zakoñczeniu zwracany jest nowy deskryptor.
- F_GETFD
- Odczytanie znacznika "zamkniêcia przy uruchomieniu" (close-on-exec). Je¶li bit FD_CLOEXEC jest równy 0, to plik pozostanie otwarty po wykonaniu exec, w przeciwnym przypadku zostanie zamkniêty.
- F_SETFD
- Nadanie znacznikowi "zamkniêcia przy uruchomieniu" (close-on-exec) warto¶ci okre¶lonej przez bit FD_CLOEXEC arg.
Znaczniki stanu pliku
Z deskryptorem pliku stowarzyszonych jest kilka znaczników inicjalizowanych przez open(2), które mog± ewentualnie byæ modyfokowane przez fcntl(2). Znaczniki s± wspó³dzielone przez kopie (wykonane za pomoc± dup(2), fork(2), itp.) tego samego deskryptora pliku.Znaczniki i ich znaczenie s± opisane w open(2).
- F_GETFL
- Odczytanie znaczników deskryptora.
- F_SETFL
- Nadanie tym znacznikom deskryptora, które okre¶laj± stan pliku, warto¶ci okre¶lonej przez arg. Pozosta³e bity (prawa dostêpu, znaczniki tworzenia pliku) w arg pozostaj± niezmienione. Pod Linuksem polecenie to mo¿e zmieniaæ jedynie znaczniki O_APPEND, O_NONBLOCK, O_ASYNC i O_DIRECT.
Blokowanie doradcze
F_GETLK, F_SETLK i F_SETLKW s³u¿± do zak³adania, zwalniania i sprawdzania obecno¶ci blokad rekordów (znanych równie¿ jako blokady segmentów lub obszarów pliku). Trzeci argument, lock, jest wska¼nikiem do struktury zawieraj±cej co najmniej nastêpuj±ce pola (kolejno¶æ nie jest okre¶lona).struct flock { ... short l_type; /* Rodzaj blokady: F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* Sposób interpretacji l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Pocz±tek (offset) blokady */ off_t l_len; /* Liczba blokowanych bajtów */ pid_t l_pid; /* PID procesu uniemo¿liwiaj±cego blokadê (tylko F_GETLK) */ ... };Pola l_whence, l_start i l_len powy¿szej struktury okre¶laj± zakres bajtów, który chcemy zablokowaæ. l_start jest pocz±tkiem (offsetem) blokady i jest interpretowane wzglêdem: pocz±tku pliku (gdy l_whence jest równe SEEK_SET); aktualnej pozycji w pliku (gdy l_whence jest równe SEEK_CUR); lub koñca pliku (gdy l_whence jest równe SEEK_END). W dwu ostatnich przypadkach l_start mo¿e byæ liczb± ujemn± o ile pozycja nie znajdzie siê przed pocz±tkiem pliku. l_len jest liczb± nieujemn± (ale zobacz UWAGI poni¿ej) okre¶laj±c± liczbê blokowanych bajtów. Mo¿na blokowaæ bajty poza koñcem pliku, ale nie przed jego pocz±tkiem. Podanie 0 jako l_len ma specjalne znaczenie: blokowanie wszystkich bajtów pocz±wszy od pozycji okre¶lonej przez l_whence i l_start do koñca pliku, niezale¿nie od tego, jaki du¿y stanie siê plik. Pole l_type mo¿e s³u¿yæ do za³o¿enia blokady dla odczytu (F_RDLCK) lub dla zapisu (F_WDLCK) do pliku. Dowolna liczba procesów mo¿e utrzymywaæ blokadê dla odczytu pliku (blokada wspólna) w pewnym jego obszarze, ale tylko jeden proces mo¿e utrzymywaæ blokadê dla zapisu do pliku (blokada wy³±czna). Blokada wy³±czna wyklucza wszelkie inne blokady, zarówno wspólne, jak i wy³±czne. Pojedynczy proces mo¿e w danym obszarze pliku utrzymywaæ blokadê tylko jednego rodzaju; gdy w aktualnie zablokowanym obszarze zak³adana jest nowa blokada, to istniej±ca blokada jest przekszta³cana w blokadê nowego typu. (Takie przekszta³cenie mo¿e poci±gaæ za sob± podzia³, skrócenie lub po³±czenie z istniej±c± blokad±, gdy zakres bajtów podany dla nowej blokady nie pokrywa siê dok³adnie z zakresem istniej±cej blokady.)
- F_SETLK
- Ustawienie blokady dla zakresu bajtów okre¶lonego przez pola l_whence, l_start and l_len lock (gdy l_type jest równe F_RDLCK lub F_WRLCK) albo jej zwolnienie (gdy l_type jest równe F_UNLCK). Je¶li koliduj±ca blokada jest utrzymywana przez inny proces, funkcja ta zwraca -1 i ustawia errno na EACCES lub EAGAIN.
- F_SETLKW
- Podobne do F_SETLK, lecz w sytuacji, gdy na pliku za³o¿ona jest koliduj±ca blokada czeka na zwolnienie tej blokady. Je¶li podczas oczekiwania zostanie przechwycony sygna³, funkcja jest przerywana i (po powrocie z funkcji obs³ugi sygna³u) powraca natychmiast (zwracaj±c warto¶æ -1 i ustawiaj±c errno na EINTR).
- F_GETLK
- Jako argument lock tej funkcji okre¶la blokadê, jak± chcieliby¶my za³o¿yæ na pliku. Gdy za³o¿enie blokady jest mo¿liwe, fcntl() w rzeczywisto¶ci jej nie zak³ada, lecz zwraca F_UNLCK w polu l_type struktury lock pozostawiaj±c inne pola tej struktury niezmienione. Je¶li co najmniej jedna niezgodna blokada uniemo¿liwi³aby za³o¿enie zadanej blokady, to fcntl() zwróci w polach l_type, l_whence, l_start i l_len struktury lock informacje dotycz±ce jednej z koliduj±cych blokad oraz ustawi l_pid na warto¶æ PID procesu utrzymuj±cego tê blokadê. Aby za³o¿yæ blokadê do odczytu, deskryptor fd musi byæ otwarty do odczytu. Aby za³o¿yæ blokadê do zapisu, deskryptor fd musi byæ otwarty do zapisu. Aby za³o¿yæ obydwa rodzaje blokad, nale¿y otworzyæ plik do odczytu i zapisu. Blokady s± usuwane w wyniku jawnego F_UNLCK, jak te¿ s± one automatycznie zwalniane gdy proces koñczy dzia³anie lub zamyka dowolny deskryptor odnosz±cy siê do pliku, na którym blokady s± utrzymywane. Jest to z³e: oznacza, ¿e proces mo¿e utraciæ blokady na pliku takim jak /etc/passwd lub /etc/mtab gdy jaka¶ funkcja biblioteczna zdecyduje siê z jakiego¶ powodu ten plik otworzyæ, odczytaæ i zamkn±æ. Blokady rekordów nie s± dziedziczone przez procesy potomne poprzez fork(2), ale s± zachowywane poprzez execve(2). Ze wzglêdu na wykonywane przez bibliotekê stdio(3) buforowanie, nale¿y unikaæ blokowania rekordów w po³±czeniu z funkcjami z tego pakietu; zamiast tego nale¿y u¿ywaæ read(2) i write(2).
Blokowanie obowi±zuj±ce
(Nie POSIX-owe.) Powy¿sze blokady plików mog± byæ albo doradcze, albo obowi±zuj±ce, a domy¶lnie s± obowi±zuj±ce. Aby skorzystaæ z obowi±zuj±cych blokad, na systemie plików zawieraj±cym blokowany plik musi byæ w³±czone blokowanie obowi±zuj±ce (za pomoc± opcji "-o mand" programu mount(8)) oraz musi byæ ono w³±czone dla samego pliku (poprzez wy³±czenie prawa uruchamiania dla grupy i w³±czenie bitu set-GID).Blokady doradcze nie s± wymuszane i s± przydatne jedynie pomiêdzy wspó³pracuj±cymi procesami. Blokady obowi±zuj±ce s± wymuszane dla wszystkich procesów.
Zarz±dzanie sygna³ami
F_GETOWN, F_SETOWN, F_GETSIG i F_SETSIG s³u¿± do zarz±dzania sygna³ami dostêpno¶ci we/wy:- F_GETOWN
- Pobranie ID procesu lub grupy procesów aktualnie otrzymuj±cych sygna³y SIGIO i SIGURG dla zdarzeñ na deskryptorze plików fd. Grupy procesów s± zwracane jako warto¶ci ujemne.
- F_SETOWN
- Ustawia ID procesu lub grupy procesów aktualnie otrzymuj±cych sygna³y SIGIO i SIGURG dla zdarzeñ na deskryptorze plików fd. Grupy procesów s± okre¶lane za pomoc± warto¶ci ujemnych. (F_SETSIG mo¿e s³u¿yæ do okre¶lenia innego sygna³u zamiast SIGIO).
Je¶li na deskryptorze pliku ustawiony zostanie znacznik stanu O_ASYNC (przez usttawienie tego znacznika przy wywo³aniu open(2), albo przy u¿yciu polecenia F_SETFL w fcntl), to gdy wej¶cie lub wyj¶cie dla tego deskryptora pliku stanie siê mo¿liwe, wys³any zostanie sygna³ SIGIO.
Proces lub grupê procesów, które otrzymaj± sygna³ mo¿na wybraæ za pomoc± polecenia F_SETOWN w funkcji fcntl. Je¶li deskryptor pliku jest gniazdem, okre¶la to równie¿ odbiorcê sygna³ów SIGURG dostarczanych gdy poprzez gniazdo przybêd± dane autonomiczne. (SIGURG jest wysy³any w sytuacjach, w których select(2) zg³osi³by "stan wyj±tkowy" dla gniazda.) Je¶li deskryptor pliku jest skojarzony z urz±dzeniem terminalowym, to sygna³y SIGIO s± wysy³ane do grupy procesów pierwszoplanowych tego terminala.
- F_GETSIG
- Pobranie numeru sygna³u wysy³anego, gdy wej¶cie lub wyj¶cie stanie siê mo¿liwe. Warto¶æ zerowa oznacza wysy³anie SIGIO. Dowolna inna warto¶æ (³±cznie z SIGIO) stanowi numer sygna³u wysy³anego zamiast SIGIO. W tych sytuacjach dodatkowe informacje mog± byæ dostêpne dla programu obs³ugi sygna³u, o ile zosta³y zainstalowane z u¿yciem SA_SIGINFO.
- F_SETSIG
- Ustawienie numeru sygna³u wysy³anego, gdy wej¶cie lub wyj¶cie stanie siê mo¿liwe. Warto¶æ zerowa oznacza wysy³anie sygna³u domy¶lnego, czyli SIGIO. Dowolna inna warto¶æ (³±cznie z SIGIO) stanowi numer sygna³u wysy³anego zamiast SIGIO. W tych sytuacjach dodatkowe informacje mog± byæ dostêpne dla programu obs³ugi sygna³u, o ile zosta³y zainstalowane z u¿yciem SA_SIGINFO.
Za pomoc± F_SETSIG z niezerow± warto¶ci± i przy ustawionym SA_SIGINFO dla programu obs³ugi sygna³u (patrz sigaction(2)), mo¿na przekazaæ do programu obs³ugi sygna³u w strukturze siginfo_t dodatkowe informacje o zdarzeniach we/wy Je¶li pole si_code wskazuje, ¿e ¼ród³em jest SI_SIGIO, to pole si_fd zawiera deskryptor pliku zwi±zany ze zdarzeniem. W przeciwnym przypadku, brak jest wskazania, które deskryptory plików oczekuj± i do okre¶lenia dostêpnych dla we/wy deskryptorów plików nale¿y u¿ywaæ zwyk³ych mechanizmów (select(2), poll(2), read(2) z ustawionym O_NONBLOCK itd.),
Wybieraj±c sygna³ czasu rzeczywistego wg POSIX.1b (warto¶æ >= SIGRTMIN), mo¿na, u¿ywaj±c tych samych numerów sygna³ów, spowodowaæ umieszczenie w kolejce wielu zdarzeñ we/wy. (Kolejkowanie zale¿y od dostêpnej pamiêci.) Jak powy¿ej, dodatkowe informacje s± dostêpne, gdy programy obs³ugi sygna³ów zosta³y zainstalowane z ustawionym SA_SIGINFO.
Za pomoc± tych mechanizmów program mo¿e zaimplementowaæ w pe³ni asynchroniczne we/wy nie u¿ywaj±c przez wiêkszo¶æ czasu select(2) i poll(2).
Opisane powy¿ej korzystanie z O_ASYNC, F_GETOWN, F_SETOWN jest specyficzne dla BSD i Linuksa. F_GETSIG i F_SETSIG s± specyficzne dla Linuksa. POSIX posiada asynchroniczne we/wy i strukturê aio_sigevent s³u¿±c± do podobnych celów; w Linuksie s± one równie¿ dostêpne jako czê¶æ biblioteki GNU C (glibc).
Dzier¿awy
F_SETLEASE i F_GETLEASE (od Linuksa 2.4 wzwy¿) s³u¿± do (odpowiednio) ustanowienia i pobrania aktualnego ustawienia dzier¿awy na pliku okre¶lonym przez fd dla procesu wywo³uj±cego funkcjê. Dzier¿awa pliku zapewnia mechanizm, w którym proces utrzymuj±cy dzier¿awê ("dzier¿awca") jest zawiadamiany (poprzez dostarczenie sygna³u) o tym, ¿e inny proces ("wspó³zawodnik") próbuje wykonaæ open(2) lub truncate(2) na tym pliku.- F_SETLEASE
- Ustawia lub usuwa dzier¿awê pliku w zale¿no¶ci od tego, która z nastêpuj±cych warto¶ci zostanie podana jako argument arg typu integer :
-
- F_RDLCK
- Wziêcie dzier¿awy odczytu. Spowoduje to zawiadamianie o otwarciu pliku do zapisu lub jego obciêciu przez inny proces.
- F_WRLCK
- Wziêcie dzier¿awy zapisu. Spowoduje to zawiadamianie o otwarciu pliku (do odczytu lub do zapisu) lub obciêciu go przez inny proces. Dzier¿awa zapisu mo¿e zostaæ na³o¿ona na plik tylko wtedy, gdy plik ten nie jest aktualnie otwarty przez ¿aden inny proces.
- F_UNLCK
- Zdjêcie w³asnej dzier¿awy z pliku.
-
- F_GETLEASE
- Wskazuje rodzaj dzier¿awy utrzymywanej przez aktualny proces na pliku okre¶lonym przez deskryptor fd, zwracaj±c F_RDLCK, F_WRLCK albo F_UNLCK, w zale¿no¶ci od tego, czy (odpowiednio) aktualny proces utrzymuje dzier¿awê odczytu, zapisu, czy nie utrzymuje ¿adnej dzier¿awy na danym pliku. (Trzeci argument fcntl() jest pomijany.)
Gdy wspó³zawodnik wykona operacjê open() lub truncate() koliduj±c± z dzier¿aw± ustanowion± poprzez F_SETLEASE, wywo³anie funkcji systemowej jest blokowane przez j±dro (chyba ¿e w open(), podano znacznik O_NONBLOCK kiedy powraca ona natycmiast zg³aszaj±c b³±d EWOULDBLOCK). J±dro zawiadamia wówczas dzier¿awcê poprzez wys³anie sygna³u (domy¶lnie SIGIO). Dzier¿awca powinien odpowiedzieæ na otrzymanie tego sygna³u wykonuj±c porz±dki niezbêdne dla przygotowania pliku do dostêpu przez inny proces (np. zrzucenie buforów) a nastêpnie usuniêcie swojej dzier¿awy poprzez wykonanie polecenia F_SETLEASE podaj±c jako arg F_UNLCK.
Je¶li dzier¿awca nie zwolni dzier¿awy w ci±gu podanej w /proc/sys/fs/lease-break-time liczby sekund, a wywo³anie funkcji systemowej przez wspó³zawodnika pozostaje zablokowane (tzn. wspó³zawodnik nie poda³ O_NONBLOCK w swoim wywo³aniu funkcji open(), ani te¿ wywo³anie funkcji systemowej nie zosta³o przerwane przez obs³ugê sygna³u), to j±dro wymusi przerwanie dzier¿awy przez dzier¿awcê.
Po dobrowolnym lub wymuszonym usuniêciu dzier¿awy, pzry za³o¿eniu, ¿e wywo³anie funkcji systemowej przez wspó³zawodnika nie jest nieblokuj±ce, j±dro pozwala na kontynuacjê funkcji systemowej wywo³anej przez wspó³zawodnika.
Domy¶lnym sygna³em stosowanym do zawiadamiania dzier¿awcy jest SIGIO, lecz mo¿na go zmieniæ za pomoc± polecenia F_SETSIG w fcntl (). Je¶li wydano polecenie F_SETSIG (nawet podaj±c SIGIO), a funkcja obs³ugi sygna³u zosta³a okre¶lona za pomoc± SA_SIGINFO, to ta funkcja obs³ugi otrzyma jako drugi argument strukturê siginfo_t, której pole si_fd bêdzie zawieraæ deskryptor dzier¿awionego pliku, do którego uzyskuje dostêp inny proces. (Jest to przydatne, gdy wywo³uj±cy utrzymuje dzier¿awy na wielu plikach).
Powiadamianie o zmianach pliku lub katalogu
- F_NOTIFY
- (od Linuksa 2.4 wzwy¿) Zapewnia powiadamianie o modyfikacji katalogu, do którego odnosi siê fd lub o modyfikacji któregokolwiek z plików w tym katalogu. Zdarzenia, powiadamianie o których ma nast±piæ s± okre¶lone w arg, bêd±cym mask± bitow± utworzon± jako suma logiczna (OR) zera lub wiêcej spo¶ród nastêpuj±cych bitów:
Bit Opis (zdarzenie w katalogu) DN_ACCESS DN_MODIFY Modyfikacja pliku (write, pwrite, writev, truncate, ftruncate) DN_CREATE Utworzenie pliku (open, creat, mknod, mkdir, link, symlink, rename) DN_DELETE Usuniêcie pliku (unlink, rename do innego katalogu, rmdir) DN_RENAME Zmiana nazwy w obrêbie katalogu (rename) DN_ATTRIB Zmiana atrybutów pliku (chown, chmod, utime[s]) (Uzyskanie ich definicji wymaga zdefiniowania makra _GNU_SOURCE przed w³±czeniem <fcntl.h>.)
Powiadomienia dotycz±ce katalogów s± zazwyczaj jednorazowe, wiêc aplikacja musi siê ponownie zarejestrowaæ, aby otrzymaæ dalsze powiadomienia. Alternatywnie, je¶li w arg w³±czono DN_MULTISHOT, to powiadomienia bêd± dokonywane a¿ do ich jawnego usuniêcia. Szereg wywo³añ podaj±cych DN_MULTISHOT kumuluje siê, przy czym zdarzenia w arg s± dodawane logicznie do ju¿ monitorowanych. Aby wy³±czyæ powiadamianie o jakichkolwiek zdarzeniach, nale¿y w wywo³aniu F_NOTIFY podaæ arg równe 0.
Powiadamianie odbywa siê poprzez dostarczenie sygna³u. Domy¶lnym sygna³em jest SIGIO, ele mo¿na go amieniæ za pomoc± polecenia F_SETSIG w fcntl(). W tym drugim przypadku, funkcja obs³ugi sygna³u otrzymuje jako swój drugi argument strukturê siginfo_t (gdy funkcja obs³ugi sygna³u zosta³a okre¶lona za pomoc± A_SIGINFO) a pole si_fd tej struktury zawiera deskryptor pliku, który spowodowa³ powiadomienie. (przydatne, gdy utrzymywane s± dzier¿awy na wielu katalogach).
W szczególno¶ci, gdy u¿ywa siê DN_MULTISHOT, do zawiadamiania powinien byæ stosowany sygna³ czasu rzeczywistego zgodny z POSIX.1b, tak aby mozna by³o kolekowaæ wiele zmian.
WARTO¦Æ ZWRACANA
Warto¶æ zwracana po pomy¶lnym zakoñczeniu funkcji zale¿y od operacji:- F_DUPFD
- Nowy deskryptor.
- F_GETFD
- Warto¶æ znacznika.
- F_GETFL
- Warto¶ci znaczników.
- F_GETOWN
- Warto¶æ w³a¶ciciela deskryptora.
F_GETSIG Warto¶æ sygna³u wys³yanego, gdy odczyt lub zapis stan± siê mo¿liwe, lub zero, dla tradycyjnego zachowania SIGIO.
- Wszystkie pozosta³e polecenia
- Zero.
Przy b³êdach zwracane jest -1 i odpowiednio ustawiane errno.
B£ÊDY
- EACCES lub EAGAIN
- Operacja jest zabroniona przez blokadê utrzymywan± przez inny proces. Albo, operacja jest zabroniona, gdy¿ plik zosta³ odwzorowany w pamiêci przez inny proces.
- EBADF
- fd nie jest deskryptorem otwartego pliku, albo by³o to polecenie F_SETLK lub F_SETLKW a tryb otwarcia deskryptora pliku nie odpowiada rodzajowi ¿±danej blokady.
- EDEADLK
- Stwierdzono, ¿e podane polecenie F_SETLKW spowodowa³oby zakleszczenie blokad.
- EFAULT
- lock znajduje siê poza dostêpn± dla u¿ytkownika przestrzeni± adresow±.
- EINTR
- Dla F_SETLKW, oznacza, ¿e polecenie zosta³o przerwane przez sygna³. Dla F_GETLK i F_SETLK, polecenie zosta³o przerwane przez sygna³ zanim blokada zosta³a sprawdzona lub ustawiona. Najbardziej prawdopodobne podczas blokowania zdalnego pliku (np. blokowanie przez NFS), ale czasmi zda¿a siê lokankie.
- EINVAL
- Dla F_DUPFD, arg jest ujemny, lub wiêkszy od maksymalnej dozwolonej warto¶ci. Dla F_SETSIG, arg nie jest dozwolonym numerem sygna³u.
- EMFILE
- Dla F_DUPFD, proces ju¿ osi±gn±³ maksymaln± liczbê otwartych deskryptorów plików.
- ENOLCK
- Zbyt wiele otwartych blokad segmentowych, tablica blokad jest pe³na lub zawiód³ protokó³ blokowania zdalnego (np. dla blokad przez NFS).
- EPERM
- Próbowano wyzerowaæ znacznik O_APPEND na pliku posiadaj±cym ustawiony atrybut "append-only".
UWAGI
B³êdy zwracane przez dup2 s± inne ni¿ zwracane przez F_DUPFD.Pocz±wszy od j±dra 2.0, nie ma oddzia³ywania pomiêdzy typami blokad zak³±danych przez flock(2) i przez fcntl(2).
POSIX 1003.1-2001 zezwala na ujemne wareo¶ci l_len. (I je¶li warto¶æ jest ujemna, to przedzia³em, którego dotyczy blokada obejmuje bajty od l_start+l_len do l_start-1 w³±cznie.) Jednak¿e, funkcja systemowa z aktualnych j±der Linuksa zwraca w tej sytuacji EINVAL.
W niektórych systemach struktura struct flock zawiera dodatkowe pola, takie jak np. l_sysid. Oczywi¶cie, samo l_pid jest ma³o przydatne, gdy proces utrzymuj±cy blokadê mo¿e dzia³aæ na innej maszynie.
ZGODNE Z
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. Tylko operacje F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK i F_SETLKW s± opisane w POSIX.1. F_GETOWN i F_SETOWN s± BSDizmami niewspieranymi przez SVr4; F_GETSIG i F_SETSIG s± specyficzne dla Linuksa. F_NOTIFY, F_GETLEASE i F_SETLEASE s± równie¿ specyficzne dla Linuksa. (Uzyskanie ich definicji wymaga zdefiniowania makra _GNU_SOURCE przed w³±czeniem <fcntl.h>.) Legalne znaczniki dla F_GETFL/F_SETFL to te, które s± wspierane przez open(2) i s± tu ró¿nice miêdzy wymienionymi systemami; O_APPEND, O_NONBLOCK, O_RDONLY, i O_RDWR s± opisane w POSIX.1. SVr4 wspiera wiele innych opcji i znaczników, tutaj nie opisanych.SVr4 dokumentuje dodatkowe b³êdy EIO, ENOLINK i EOVERFLOW.
ZOBACZ TAK¯E
dup2(2), flock(2), lockf(3), open(2), socket(2) Zobacz te¿ locks.txt, mandatory.txt i dnotify.txt w /usr/src/linux/Documentation.Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre