Provided by: manpages-pl-dev_0.7-2_all bug

NAZWA

       fcntl - manipulacje na deskryptorze pliku

SKŁ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

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

       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.

       Proces może utrzymywać na pliku dzierżawę tylko jednego typu.

       Dzierżawy można pobierać  tylko  dla  zwykłych  plików.   Proces  nieuprzywilejowany  może
       pobierać  jedynie  dzierżawy  na plikach, których UID odpowiada UID-owi systemu plików dla
       danego procesu.

       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   Dostęp do pliku (read, pread, readv)
              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.

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 fcntl

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