CLOSE(2) CLOSE(2)
НАЗВАНИЕ
close - закрыть дескриптор файла
СИНТАКСИС
int close (fildes)
int fildes;
ОПИСАНИЕ
Аргумент fildes - это дескриптор файла, полученный в
результате выполнения системных вызовов creat, open,
dup, fcntl или pipe. Системный вызов close закрывает
этот дескриптор. Все блокировки файла, ассоциированного
с дескриптором fildes, принадлежащие вызывающему про-
цессу, удаляются.
Если закрывается файл-псевдоустройство [см. intro(2)] и
вызывающий процесс предварительно зарегистрирован для
получения сигнала SIGPOLL [см. signal(2) и sigset(2)] в
связи с событиями, ассоциированными с этим файлом [см.
I_SETSIG в streamio(7)], регистрация событий примени-
тельно к упомянутым процессу и файлу отменяется.
Последний вызов close для потока, связанного с дескрип-
тором fildes, приводит к ликвидации потока. Если флаг
O_NDELAY не установлен и не было сигналов, предназна-
ченных для потока, системный вызов close ждет до 15 се-
кунд, пока все модули и драйверы завершат вывод, и
только после этого ликвидирует поток. Если флаг
O_NDELAY установлен или есть отложенные сигналы, сис-
темный вызов close не ждет окончания вывода и ликвиди-
рует поток немедленно.
Системный вызов close завершается неудачей и указанный
дескриптор файла не закрывается, если выполнено хотя бы
одно из следующих условий:
[EBADF] Аргумент fildes не является корректным
дескриптором открытого файла.
[EINTR] Во время выполнения системного вызова пе-
рехвачен сигнал.
[ENOLINK] Аргумент fildes указывает на удаленный
компьютер, связи с которым в данный момент
нет.
СМ. ТАКЖЕ
creat(2), dup(2), exec(2), fcntl(2), intro(2), open(2),
pipe(2), signal(2), sigset(2).
streamio(7) в Справочнике администратора.
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае
ошибки возвращается -1, а переменной errno присваивает-
ся код ошибки.
|