FCNTL(2) Podręcznik programisty linuxowego FCNTL(2)
NAZWA
fcntl - manipuluj deskryptorem pliku
SKŁADNIA
#include <unistd.h>
#include <fcntl.h>
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
OPIs
fcntl dokonuje jednej z wielu różnych operacji na fd.
Operacja w zapytaniu zdeterminowana jest przez cmd:
F_DUPFD Powoduje, że arg staje się kopią fd, zamykając
najpierw fd jeśli to konieczne.
Ten sam efekt można (łatwiej) osiągnąć poprzez
użycie dup2(2).
Stare i nowe deskryptory mogą być używane zamien
nie. Dzielą one locki, wskaźniki pozycji pliku i
flagi; np. jeśli pozycja pliku zostanie zmody
fikowana poprzez lseek na jednym z deskryptorów,
zmieni się również pozycja na drugim.
Te dwa deskryptory nie dzielą jednak flagi close-
on-exec. Flaga close-on-exec kopii jest
wyłączona, co znaczy, że zostanie zamknięta pod
czas wywołania (exec).
Po sukcesie, zwrócony jest nowy deskryptor.
F_GETFD Odczytaj flagę close-on-exec. Jeśli najniższy bit
jest 0, to plik pozostanie otwarty pomimo exec, w
innym wypadku zostanie zamknięty.
F_SETFD Ustaw flagę close-on-exec na wartość określoną
przez arg (tylko ostatni znaczący bit jest
używany).
F_GETFL Odczytaj flagi deskryptora (wszystkie flagi (jak
ustawiono przez open(2) są zwracane).
F_SETFL Ustaw flagi deskryptora na wartość określoną
przez arg. Można ustawić tylko O_APPEND i O_NON
BLOCK.
Flagi są dzielone między kopiami (zrobionymi
dzięki dup itp.) dego samego deskryptora.
Flagi i ich znaczenie są opisane w open(2).
Linux 26 September 1995 1
FCNTL(2) Podręcznik programisty linuxowego FCNTL(2)
F_GETLK, F_SETLK i F_SETLKW
Obsługują dyskretne locki plików. Trzeci argu
ment, arg jest wskaźnikiem do struktury flock is
a pointer to a struct flock (która może zostać
nadpisana przez to wywołanie).
F_GETLK Zwróć strukturę flock, która chroni nas przed
uzyskaniem locka, lub ustaw pole l_type locka na
F_UNLCK jeśli nie ma tam żadnych trudności.
F_SETLK Lock jest ustawiany jeśli l_type jest F_RDLCK lub
F_WRLCK) albo usuwany (gdy jest F_UNLCK). Jeśli
lock jest przechowywany przez kogoś innego, to
wywołanie zwraca -1 i ustawia errno na EACCES lub
EAGAIN.
F_SETLKW Podobnie jak F_SETLK, lecz zamiast zwracać błąd,
czeka aż lock zostanie zwolniony.
F_GETOWN Pobierz ID procesu (lub grupę procesu)
właściciela gniazda.
Grupy procesów są zwracane jako wartości ujemne.
F_SETOWN Ustaw proces, lub grupę procesów będących
właścicielami gniazda.
Dla tych komend, właścicielstwo oznacza otrzymy
wanie sygnałów SIGIO lub SIGURG .
Grupy procesów są podawane jako wartości ujemne.
WARTOŚĆ ZWRACANA
Wartość zwracana zależy od operacji:
F_DUPFD nowy deskryptor.
F_GETFD Wartość flagi.
F_GETFL Wartości flag.
F_GETOWN Wartość właściciela deskryptora.
Przy błedach zwracane jest -1 i ustawiane errno .
BŁĘDY
EACCES Operacja zabroniona przez lock innego procesu.
EAGAIN Operacaja zabroniona, bo plik został zmapowany do
pamięci przez inny proces.
EDEADLK Podana operacja locku zapisu spowodowałaby dead
lock.
Linux 26 September 1995 2
FCNTL(2) Podręcznik programisty linuxowego FCNTL(2)
EBADF fd nie jest deskryptorem otwartego pliku.
EINVAL Dla F_DUPFD, arg jest ujemny, lub większy od doz
wolonego maksimum.
EMFILE Dla F_DUPFD, proces już osiągnął maksimum
otwartych deskryptorów plików.
ENOLCK Zbyt wiele otwartych locków segmentowych, tablica
locków jest pełna.
UWAGI
Błędy zwracane przez dup2 są inne niż te zwracane przez
F_DUPFD.
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. Legalne
flagi dla F_GETFL/F_SETFL to te, wspierane przez open(2) i
są tu różnice między tymi systemami; O_APPEND, O_NONBLOCK,
O_RDONLY, i O_RDWR są opisane w POSIX.1. SVr4 wspiera
wiele innych opcji i flag, nie opisanych tutaj.
POSIX.1 dokumentuje dodatkowy warunek błędu EINTR. SVr4
natomiast dodatkowo EFAULT, EINTR, EIO, ENOLINK i EOVER
FLOW.
ZOBACZ TAKŻE
dup2(2), open(2), socket(2), flock(2)
Linux 26 September 1995 3
Wyszukiwarka
Podobne podstrony:
fcntl c2 (2)fcntl c (2)Fcntlmodule fcntlfcntl h (2)function dio fcntlfcntl cfcntl (2)więcej podobnych podstron