Linux.pl
Opcje wyszukiwania podręcznika man:
Lista stron man zaczynających się od znaku:
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   ALPHA   NUM   OTHER   ALL
FCNTL(2)                Podręcznik programisty Linuksa                FCNTL(2)

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
       fcntl dokonuje jednej z wielu różnych operacji na fd.  Wykonywana oper-
       acja 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  konkret-
              nego, 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  inicjali-
       zowanych  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 sprawdza-
       nia obecności blokad rekordów (znanych również jako  blokady  segmentów
       lub obszarów pliku).  Trzeci argument, lock, jest wskaźnikiem do struk-
       tury 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 przek-
       ształ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 pod-
              czas oczekiwania zostanie przechwycony sygnał, funkcja jest prz-
              erywana  i (po powrocie z funkcji obsługi sygnału) powraca naty-
              chmiast (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 automaty-
       cznie zwalniane gdy proces kończy działanie lub zamyka dowolny deskryp-
       tor  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  sytuac-
              jach 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  sig-
              info_t  dodatkowe  informacje  o  zdarzeniach  we/wy  Jeśli pole
              si_code wskazuje, że źródłem jest SI_SIGIO, to pole  si_fd  zaw-
              iera deskryptor pliku związany ze zdarzeniem. W przeciwnym przy-
              padku, 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. (Kole-
              jkowanie 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  asyn-
       chroniczne  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  specy-
       ficzne  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 trun-
       cate(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  nieuprzy-
       wilejowany  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_NON-
       BLOCK 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 syste-
       mowej 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 kat-
              alogu, 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_MULTI-
              SHOT,  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ż moni-
              torowanych.   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 utrzymy-
              wane 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 zak-
              leszczenie 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 doz-
              wolonej 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/Doc-
       umentation.

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

Time taken: 0.00030 seconds


Created with the man page lookup class by Andrew Collington, php@amnuts.com