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

Linux-2.5.18                                       2002-04-24                                           FCNTL(2)