Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       fcntl - manipulacje na deskryptorze pliku

SK/LADNIA

       #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  ronych  operacji  na fd.  Wykonywana
       operacja zdeterminowana jest przez cmd.

   Obs/luga zamknicia przy uruchomieniu (close-on-exec)
       F_DUPFD
              Znalezienie najniszego dostpnego numeru dla  deskryptora  pliku,
              wiekszego lub rownego arg i uczynienie deskryptora o tym numerze
              kopi fd.  Jest to inna posta dup2(2), korzystajca z konkretnego,
              zadanego deskryptora.

              Stare  i  nowe  deskryptory  mog  by uywane zamiennie. Dziel one
              blokady, wskaniki pozycji  pliku  i  flagi;  na  przyklad,  jeli
              pozycja  pliku  zostanie  zmodyfikowana  poprzez  uycie lseek na
              jednym z deskryptorow, zmieni si  rownie  pozycja  dla  drugiego
              deskryptora.

              Te  dwa  deskryptory  nie wspoldziel jednak znacznika "zamknicia
              przy uruchomieniu" (close-on-exec). Znacznik ten dla kopii  jest
              wyzerowany,  co  oznacza,  e kopia nie zostanie zamknita podczas
              wywolania exec.

              Po pomylnym zakoczeniu zwracany jest nowy deskryptor.

       F_GETFD
              Odczytanie znacznika "zamknicia  przy  uruchomieniu"  (close-on-
              exec).  Jeli  bit  FD_CLOEXEC  jest  rowny 0, to plik pozostanie
              otwarty po  wykonaniu  exec,  w  przeciwnym  przypadku  zostanie
              zamknity.

       F_SETFD
              Nadanie  znacznikowi  "zamknicia  przy  uruchomieniu" (close-on-
              exec) wartoci okrelonej przez bit FD_CLOEXEC arg.

   Znaczniki stanu pliku
       Z   deskryptorem   pliku   stowarzyszonych   jest   kilka    znacznikow
       inicjalizowanych  przez  open(2), ktore mog ewentualnie by modyfokowane
       przez fcntl(2).  Znaczniki s wspoldzielone  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 znacznikow deskryptora.

       F_SETFL
              Nadanie  tym  znacznikom  deskryptora, ktore okrelaj stan pliku,
              wartoci okrelonej przez  arg.   Pozostale  bity  (prawa  dostpu,
              znaczniki  tworzenia  pliku)  w  arg pozostaj niezmienione.  Pod
              Linuksem polecenie to moe zmienia  jedynie  znaczniki  O_APPEND,
              O_NONBLOCK, O_ASYNC i O_DIRECT.

   Blokowanie doradcze
       F_GETLK, F_SETLK i F_SETLKW slu do zakladania, zwalniania i sprawdzania
       obecnoci blokad rekordow (znanych rownie  jako  blokady  segmentow  lub
       obszarow  pliku).   Trzeci argument, lock, jest wskanikiem do struktury
       zawierajcej co najmniej nastpujce pola (kolejno nie jest okrelona).

         struct flock {
             ...
             short l_type;    /* Rodzaj blokady: F_RDLCK,
                                 F_WRLCK, F_UNLCK */
             short l_whence;  /* Sposob interpretacji l_start:
                                 SEEK_SET, SEEK_CUR, SEEK_END */
             off_t l_start;   /* Pocztek (offset) blokady */
             off_t l_len;     /* Liczba blokowanych bajtow */
             pid_t l_pid;     /* PID procesu uniemoliwiajcego blokad
                                 (tylko F_GETLK) */
             ...
         };

       Pola l_whence,  l_start  i  l_len  powyszej  struktury  okrelaj  zakres
       bajtow,  ktory  chcemy  zablokowa.   l_start  jest pocztkiem (offsetem)
       blokady i jest interpretowane wzgldem: pocztku pliku (gdy l_whence jest
       rowne  SEEK_SET);  aktualnej  pozycji  w pliku (gdy l_whence jest rowne
       SEEK_CUR); lub koca pliku (gdy l_whence jest rowne  SEEK_END).   W  dwu
       ostatnich  przypadkach  l_start  moe  by  liczb ujemn o ile pozycja nie
       znajdzie si przed pocztkiem pliku.   l_len  jest  liczb  nieujemn  (ale
       zobacz  UWAGI  poniej)  okrelajc liczb blokowanych bajtow. Mona blokowa
       bajty poza kocem pliku, ale nie przed jego pocztkiem.  Podanie  0  jako
       l_len  ma specjalne znaczenie: blokowanie wszystkich bajtow poczwszy od
       pozycji okrelonej przez l_whence i l_start do koca pliku, niezalenie od
       tego, jaki duy stanie si plik.

       Pole  l_type moe sluy do zaloenia blokady dla odczytu (F_RDLCK) lub dla
       zapisu (F_WDLCK) do pliku. Dowolna liczba procesow moe utrzymywa blokad
       dla  odczytu  pliku (blokada wspolna) w pewnym jego obszarze, ale tylko
       jeden  proces  moe  utrzymywa  blokad  dla  zapisu  do  pliku  (blokada
       wylczna).  Blokada  wylczna  wyklucza  wszelkie  inne  blokady, zarowno
       wspolne, jak i wylczne.  Pojedynczy proces moe w danym  obszarze  pliku
       utrzymywa  blokad  tylko  jednego rodzaju; gdy w aktualnie zablokowanym
       obszarze  zakladana  jest  nowa  blokada,  to  istniejca  blokada  jest
       przeksztalcana w blokad nowego typu.  (Takie przeksztalcenie moe pociga
       za sob podzial, skrocenie lub polczenie z istniejc blokad,  gdy  zakres
       bajtow  podany  dla  nowej  blokady nie pokrywa si dokladnie z zakresem
       istniejcej blokady.)

       F_SETLK
              Ustawienie blokady dla  zakresu  bajtow  okrelonego  przez  pola
              l_whence,  l_start and l_len lock (gdy l_type jest rowne F_RDLCK
              lub  F_WRLCK)  albo  jej  zwolnienie  (gdy  l_type  jest   rowne
              F_UNLCK).   Jeli  kolidujca  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 zaloona jest
              kolidujca blokada czeka na zwolnienie tej blokady.  Jeli podczas
              oczekiwania   zostanie   przechwycony   sygnal,   funkcja   jest
              przerywana i (po powrocie z  funkcji  obslugi  sygnalu)  powraca
              natychmiast (zwracajc warto -1 i ustawiajc errno na EINTR).

       F_GETLK
              Jako  argument  lock  tej funkcji okrela blokad, jak chcielibymy
              zaloy na pliku.  Gdy zaloenie blokady  jest  moliwe,  fcntl()  w
              rzeczywistoci jej nie zaklada, lecz zwraca F_UNLCK w polu l_type
              struktury   lock   pozostawiajc   inne   pola   tej    struktury
              niezmienione.    Jeli   co   najmniej  jedna  niezgodna  blokada
              uniemoliwilaby zaloenie zadanej blokady,  to  fcntl()  zwroci  w
              polach   l_type,   l_whence,  l_start  i  l_len  struktury  lock
              informacje dotyczce jednej  z  kolidujcych  blokad  oraz  ustawi
              l_pid na warto PID procesu utrzymujcego t blokad.

       Aby  zaloy blokad do odczytu, deskryptor fd musi by otwarty do odczytu.
       Aby zaloy blokad do zapisu, deskryptor fd musi by  otwarty  do  zapisu.
       Aby  zaloy  obydwa  rodzaje  blokad,  naley  otworzy  plik do odczytu i
       zapisu.

       Blokady s usuwane w wyniku jawnego F_UNLCK, jak te s one  automatycznie
       zwalniane  gdy  proces  koczy  dzialanie  lub zamyka dowolny deskryptor
       odnoszcy si do pliku, na ktorym blokady s utrzymywane.   Jest  to  zle:
       oznacza, e proces moe 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  rekordow  nie  s  dziedziczone  przez  procesy potomne poprzez
       fork(2), ale s zachowywane poprzez execve(2).

       Ze wzgldu na wykonywane przez  bibliotek  stdio(3)  buforowanie,  naley
       unika  blokowania  rekordow  w  polczeniu  z  funkcjami z tego pakietu;
       zamiast tego naley uywa read(2) i write(2).

   Blokowanie obowizujce
       (Nie POSIX-owe.)  Powysze blokady plikow mog  by  albo  doradcze,  albo
       obowizujce,  a  domylnie  s  obowizujce.   Aby skorzysta z obowizujcych
       blokad, na systemie plikow zawierajcym blokowany plik musi  by  wlczone
       blokowanie obowizujce (za pomoc opcji "-o mand" programu mount(8)) oraz
       musi  by  ono  wlczone  dla  samego  pliku  (poprzez  wylczenie   prawa
       uruchamiania dla grupy i wlczenie bitu set-GID).

       Blokady  doradcze  nie  s  wymuszane  i  s  przydatne  jedynie  pomidzy
       wspolpracujcymi  procesami.  Blokady   obowizujce   s   wymuszane   dla
       wszystkich procesow.

   Zarzdzanie sygna/lami
       F_GETOWN,  F_SETOWN,  F_GETSIG  i  F_SETSIG slu do zarzdzania sygnalami
       dostpnoci we/wy:

       F_GETOWN
              Pobranie ID procesu lub grupy  procesow  aktualnie  otrzymujcych
              sygnaly  SIGIO  i  SIGURG  dla zdarze na deskryptorze plikow fd.
              Grupy procesow s zwracane jako wartoci ujemne.

       F_SETOWN
              Ustawia ID procesu lub  grupy  procesow  aktualnie  otrzymujcych
              sygnaly  SIGIO  i  SIGURG  dla zdarze na deskryptorze plikow fd.
              Grupy procesow s okrelane za pomoc wartoci ujemnych.   (F_SETSIG
              moe sluy do okrelenia innego sygnalu zamiast SIGIO).

              Jeli  na  deskryptorze  pliku  ustawiony zostanie znacznik stanu
              O_ASYNC  (przez  usttawienie  tego  znacznika   przy   wywolaniu
              open(2),  albo  przy  uyciu  polecenia  F_SETFL w fcntl), to gdy
              wejcie lub wyjcie dla tego deskryptora pliku stanie  si  moliwe,
              wyslany zostanie sygnal SIGIO.

              Proces  lub  grup  procesow, ktore otrzymaj sygnal mona wybra za
              pomoc polecenia F_SETOWN w funkcji fcntl.  Jeli deskryptor pliku
              jest   gniazdem,   okrela  to  rownie  odbiorc  sygnalow  SIGURG
              dostarczanych gdy  poprzez  gniazdo  przybd  dane  autonomiczne.
              (SIGURG   jest   wysylany  w  sytuacjach,  w  ktorych  select(2)
              zglosilby "stan wyjtkowy" dla gniazda.)  Jeli  deskryptor  pliku
              jest  skojarzony  z  urzdzeniem terminalowym, to sygnaly SIGIO s
              wysylane do grupy procesow pierwszoplanowych tego terminala.

       F_GETSIG
              Pobranie numeru sygnalu wysylanego, gdy wejcie lub wyjcie stanie
              si  moliwe.  Warto  zerowa oznacza wysylanie SIGIO. Dowolna inna
              warto (lcznie z SIGIO) stanowi numer sygnalu wysylanego  zamiast
              SIGIO. W tych sytuacjach dodatkowe informacje mog by dostpne dla
              programu obslugi sygnalu, o ile zostaly zainstalowane  z  uyciem
              SA_SIGINFO.

       F_SETSIG
              Ustawienie  numeru  sygnalu  wysylanego,  gdy  wejcie lub wyjcie
              stanie  si  moliwe.  Warto  zerowa  oznacza  wysylanie   sygnalu
              domylnego,  czyli  SIGIO.   Dowolna  inna warto (lcznie z SIGIO)
              stanowi  numer  sygnalu  wysylanego  zamiast   SIGIO.   W   tych
              sytuacjach  dodatkowe  informacje  mog  by  dostpne dla programu
              obslugi  sygnalu,  o  ile   zostaly   zainstalowane   z   uyciem
              SA_SIGINFO.

              Za   pomoc   F_SETSIG  z  niezerow  wartoci  i  przy  ustawionym
              SA_SIGINFO dla programu obslugi  sygnalu  (patrz  sigaction(2)),
              mona przekaza do programu obslugi sygnalu w strukturze siginfo_t
              dodatkowe informacje  o  zdarzeniach  we/wy  Jeli  pole  si_code
              wskazuje,   e  rodlem  jest  SI_SIGIO,  to  pole  si_fd  zawiera
              deskryptor pliku zwizany ze zdarzeniem. W przeciwnym  przypadku,
              brak  jest  wskazania,  ktore  deskryptory  plikow  oczekuj i do
              okrelenia dostpnych dla we/wy  deskryptorow  plikow  naley  uywa
              zwyklych  mechanizmow  (select(2), poll(2), read(2) z ustawionym
              O_NONBLOCK itd.),

              Wybierajc sygnal  czasu  rzeczywistego  wg  POSIX.1b  (warto  >=
              SIGRTMIN),  mona, uywajc tych samych numerow sygnalow, spowodowa
              umieszczenie w kolejce wielu zdarze we/wy.  (Kolejkowanie  zaley
              od   dostpnej  pamici.)   Jak  powyej,  dodatkowe  informacje  s
              dostpne, gdy programy obslugi sygnalow zostaly  zainstalowane  z
              ustawionym SA_SIGINFO.

       Za   pomoc   tych   mechanizmow  program  moe  zaimplementowa  w  pelni
       asynchroniczne we/wy nie uywajc przez wikszo czasu select(2) i poll(2).

       Opisane  powyej  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
       sluc  do  podobnych  celow;  w  Linuksie  s  one rownie dostpne jako cz
       biblioteki GNU C (glibc).

   Dzierawy
       F_SETLEASE i F_GETLEASE (od Linuksa  2.4  wzwy)  slu  do  (odpowiednio)
       ustanowienia   i  pobrania  aktualnego  ustawienia  dzierawy  na  pliku
       okrelonym przez fd dla  procesu  wywolujcego  funkcj.   Dzierawa  pliku
       zapewnia  mechanizm,  w  ktorym proces utrzymujcy dzieraw ("dzierawca")
       jest zawiadamiany (poprzez dostarczenie sygnalu) o tym, e  inny  proces
       ("wspolzawodnik") probuje wykona open(2) lub truncate(2) na tym pliku.

       F_SETLEASE
              Ustawia  lub  usuwa  dzieraw  pliku  w zalenoci od tego, ktora z
              nastpujcych wartoci  zostanie  podana  jako  argument  arg  typu
              integer :

              F_RDLCK
                     Wzicie  dzierawy  odczytu.   Spowoduje to zawiadamianie o
                     otwarciu pliku do zapisu  lub  jego  obciciu  przez  inny
                     proces.

              F_WRLCK
                     Wzicie  dzierawy  zapisu.   Spowoduje  to zawiadamianie o
                     otwarciu pliku (do odczytu lub do zapisu) lub obciciu  go
                     przez  inny  proces. Dzierawa zapisu moe zosta naloona na
                     plik tylko wtedy, gdy plik ten nie jest aktualnie otwarty
                     przez aden inny proces.

              F_UNLCK
                     Zdjcie wlasnej dzierawy z pliku.

       Proces moe utrzymywa na pliku dzieraw tylko jednego typu.

       Dzierawy    mona   pobiera   tylko   dla   zwyklych   plikow.    Proces
       nieuprzywilejowany moe pobiera jedynie dzierawy na plikach, ktorych UID
       odpowiada UID-owi systemu plikow dla danego procesu.

       F_GETLEASE
              Wskazuje  rodzaj  dzierawy utrzymywanej przez aktualny proces na
              pliku okrelonym przez deskryptor fd, zwracajc  F_RDLCK,  F_WRLCK
              albo  F_UNLCK,  w  zalenoci  od tego, czy (odpowiednio) aktualny
              proces utrzymuje dzieraw  odczytu,  zapisu,  czy  nie  utrzymuje
              adnej  dzierawy  na  danym pliku.  (Trzeci argument fcntl() jest
              pomijany.)

       Gdy wspolzawodnik wykona  operacj  open()  lub  truncate()  kolidujc  z
       dzieraw  ustanowion  poprzez  F_SETLEASE,  wywolanie funkcji systemowej
       jest blokowane przez jdro (chyba e w open(), podano znacznik O_NONBLOCK
       kiedy   powraca   ona  natycmiast  zglaszajc  bld  EWOULDBLOCK).   Jdro
       zawiadamia wowczas dzierawc poprzez wyslanie sygnalu (domylnie  SIGIO).
       Dzierawca  powinien  odpowiedzie  na  otrzymanie  tego sygnalu wykonujc
       porzdki niezbdne dla przygotowania pliku do dostpu  przez  inny  proces
       (np.  zrzucenie  buforow)  a  nastpnie usunicie swojej dzierawy poprzez
       wykonanie polecenia F_SETLEASE podajc jako arg F_UNLCK.

       Jeli dzierawca nie zwolni dzierawy w cigu podanej w /proc/sys/fs/lease-
       break-time   liczby   sekund,  a  wywolanie  funkcji  systemowej  przez
       wspolzawodnika pozostaje  zablokowane  (tzn.  wspolzawodnik  nie  podal
       O_NONBLOCK  w  swoim wywolaniu funkcji open(), ani te wywolanie funkcji
       systemowej nie zostalo przerwane przez obslug sygnalu), to jdro  wymusi
       przerwanie dzierawy przez dzierawc.

       Po  dobrowolnym  lub  wymuszonym  usuniciu  dzierawy,  pzry zaloeniu, e
       wywolanie funkcji systemowej przez wspolzawodnika nie jest nieblokujce,
       jdro   pozwala   na   kontynuacj  funkcji  systemowej  wywolanej  przez
       wspolzawodnika.

       Domylnym sygnalem stosowanym do  zawiadamiania  dzierawcy  jest  SIGIO,
       lecz  mona  go  zmieni  za  pomoc  polecenia F_SETSIG w fcntl ().  Jeli
       wydano polecenie F_SETSIG  (nawet  podajc  SIGIO),  a  funkcja  obslugi
       sygnalu  zostala  okrelona  za  pomoc SA_SIGINFO, to ta funkcja obslugi
       otrzyma jako drugi argument struktur siginfo_t, ktorej pole si_fd bdzie
       zawiera  deskryptor dzierawionego pliku, do ktorego uzyskuje dostp inny
       proces.  (Jest to przydatne, gdy wywolujcy utrzymuje dzierawy na  wielu
       plikach).

   Powiadamianie o zmianach pliku lub katalogu
       F_NOTIFY
              (od  Linuksa  2.4  wzwy)  Zapewnia  powiadamianie  o modyfikacji
              katalogu,  do  ktorego  odnosi   si   fd   lub   o   modyfikacji
              ktoregokolwiek    z   plikow   w   tym   katalogu.    Zdarzenia,
              powiadamianie o ktorych ma nastpi s okrelone w arg,  bdcym  mask
              bitow  utworzon  jako  suma  logiczna (OR) zera lub wicej sporod
              nastpujcych bitow:

              Bit         Opis (zdarzenie w katalogu)
              ----------------------------------------------------------
              DN_ACCESS   Dostp 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   Usunicie pliku (unlink, rename do
                          innego katalogu, rmdir)
              DN_RENAME   Zmiana nazwy w obrbie katalogu
                          (rename)
              DN_ATTRIB   Zmiana atrybutow pliku
                          (chown, chmod, utime[s])

              (Uzyskanie ich definicji wymaga zdefiniowania makra  _GNU_SOURCE
              przed wlczeniem <fcntl.h>.)

              Powiadomienia  dotyczce  katalogow  s zazwyczaj jednorazowe, wic
              aplikacja musi si  ponownie  zarejestrowa,  aby  otrzyma  dalsze
              powiadomienia.   Alternatywnie, jeli w arg wlczono DN_MULTISHOT,
              to powiadomienia  bd  dokonywane  a  do  ich  jawnego  usunicia.
              Szereg  wywola  podajcych  DN_MULTISHOT  kumuluje  si, przy czym
              zdarzenia w arg s dodawane logicznie do ju monitorowanych.   Aby
              wylczy   powiadamianie  o  jakichkolwiek  zdarzeniach,  naley  w
              wywolaniu F_NOTIFY poda arg rowne 0.

              Powiadamianie odbywa si poprzez dostarczenie sygnalu.   Domylnym
              sygnalem  jest  SIGIO,  ele  mona  go  amieni za pomoc polecenia
              F_SETSIG w fcntl().  W tym  drugim  przypadku,  funkcja  obslugi
              sygnalu  otrzymuje  jako  swoj drugi argument struktur siginfo_t
              (gdy  funkcja  obslugi  sygnalu  zostala   okrelona   za   pomoc
              A_SIGINFO)  a pole si_fd tej struktury zawiera deskryptor pliku,
              ktory spowodowal powiadomienie.  (przydatne, gdy  utrzymywane  s
              dzierawy na wielu katalogach).

              W  szczegolnoci,  gdy  uywa  si  DN_MULTISHOT,  do zawiadamiania
              powinien  by  stosowany  sygnal  czasu  rzeczywistego  zgodny  z
              POSIX.1b, tak aby mozna bylo kolekowa wiele zmian.

WARTO ZWRACANA

       Warto zwracana po pomylnym zakoczeniu funkcji zaley od operacji:

       F_DUPFD  Nowy deskryptor.

       F_GETFD  Warto znacznika.

       F_GETFL  Wartoci znacznikow.

       F_GETOWN Warto wlaciciela deskryptora.

       F_GETSIG Warto sygnalu wyslyanego, gdy odczyt lub zapis stan si moliwe,
       lub zero, dla tradycyjnego zachowania SIGIO.

       Wszystkie pozostale polecenia
              Zero.

       Przy bldach zwracane jest -1 i odpowiednio ustawiane errno.

B/LDY

       EACCES lub EAGAIN
              Operacja jest zabroniona  przez  blokad  utrzymywan  przez  inny
              proces.    Albo,  operacja  jest  zabroniona,  gdy  plik  zostal
              odwzorowany w pamici przez inny proces.

       EBADF  fd nie jest deskryptorem otwartego pliku, albo bylo to polecenie
              F_SETLK  lub  F_SETLKW  a  tryb  otwarcia  deskryptora pliku nie
              odpowiada rodzajowi danej blokady.

       EDEADLK
              Stwierdzono,   e   podane   polecenie   F_SETLKW   spowodowaloby
              zakleszczenie blokad.

       EFAULT lock znajduje si poza dostpn dla uytkownika przestrzeni adresow.

       EINTR  Dla  F_SETLKW,  oznacza,  e  polecenie  zostalo  przerwane przez
              sygnal.  Dla F_GETLK  i  F_SETLK,  polecenie  zostalo  przerwane
              przez  sygnal  zanim  blokada  zostala sprawdzona lub ustawiona.
              Najbardziej prawdopodobne podczas blokowania zdalnego pliku (np.
              blokowanie przez NFS), ale czasmi zdaa si lokankie.

       EINVAL Dla   F_DUPFD,  arg  jest  ujemny,  lub  wikszy  od  maksymalnej
              dozwolonej  wartoci.  Dla  F_SETSIG,  arg  nie  jest  dozwolonym
              numerem sygnalu.

       EMFILE Dla   F_DUPFD,   proces  ju  osignl  maksymaln  liczb  otwartych
              deskryptorow plikow.

       ENOLCK Zbyt wiele otwartych blokad segmentowych,  tablica  blokad  jest
              pelna  lub  zawiodl protokol blokowania zdalnego (np. dla blokad
              przez NFS).

       EPERM  Probowano  wyzerowa  znacznik  O_APPEND  na  pliku   posiadajcym
              ustawiony atrybut "append-only".

UWAGI

       Bldy zwracane przez dup2 s inne ni zwracane przez F_DUPFD.

       Poczwszy  od  jdra  2.0,  nie  ma  oddzialywania  pomidzy typami blokad
       zakldanych przez flock(2) i przez fcntl(2).

       POSIX 1003.1-2001 zezwala na ujemne wareoci l_len.  (I jeli warto  jest
       ujemna,  to  przedzialem,  ktorego  dotyczy  blokada  obejmuje bajty od
       l_start+l_len do  l_start-1  wlcznie.)  Jednake,  funkcja  systemowa  z
       aktualnych jder Linuksa zwraca w tej sytuacji EINVAL.

       W  niektorych  systemach struktura struct flock zawiera dodatkowe pola,
       takie jak np.  l_sysid.  Oczywicie, samo l_pid jest malo przydatne, gdy
       proces utrzymujcy blokad moe dziala 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 rownie specyficzne dla Linuksa.  (Uzyskanie ich definicji
       wymaga zdefiniowania  makra  _GNU_SOURCE  przed  wlczeniem  <fcntl.h>.)
       Legalne  znaczniki  dla  F_GETFL/F_SETFL to te, ktore s wspierane przez
       open(2)  i  s  tu  ronice  midzy  wymienionymi   systemami;   O_APPEND,
       O_NONBLOCK,  O_RDONLY, i O_RDWR s opisane w POSIX.1. SVr4 wspiera wiele
       innych opcji i znacznikow, tutaj nie opisanych.

       SVr4 dokumentuje dodatkowe bldy EIO, ENOLINK i EOVERFLOW.

ZOBACZ TAKE

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