close - функция, закрывающая описатель файла
НАЗВАНИЕclose - функция, закрывающая описатель файла
СИНТАКСИС
#include
int close(int fd);
ОПИСАНИЕ
close закрывает описатель файла, который после этого не
указывает ни на один файл и может быть использован
повторно. все блокировки соответствующего файла снимаются
(независимо от того, был ли использован для блокировки
именно этот файловый описатель).
Если fd является последней копией какого-либо файлового
описателя, то ресурсы, связанные с ним, освобождаются;
если описатель был последней ссылкой на файл, удаленный с
помощью unlink(2), то файл окончательно удаляется.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
После успешного выполнения close возвращаемое значение
становится равным нулю, а в случае ошибки оно равно -1.
КОДЫ ОШИБОК
EBADF ( fd является неверным файловым описателем).
EINTR Вызов close() был прерван сигналом.
EIO Ошибка ввода-вывода.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. В SVr4 определен
дополнительный код ошибки ENOLINK.
ЗАМЕЧАНИЯ
Не проверять значение, возвращаемое функцией close, /-/-
обычная, но от этого не менее серьезная ошибка
программирования. Весьма вероятно, что ошибки предыдущего
вызова write(2) проявятся только при вызове конечного
close. Если значение, возвращаемое при закрытии файла, не
проверяется, то данные могут быть незаметно потеряны. В
особенности это может проявлятся при работе с NFS и
дисковыми квотами.
Успешное закрытие файла не гарантирует, что данные будут
сохранены на диске, т.к. ядро задерживает процесс записи.
В файловой системе информация буфера не всегда
записывается на диск после закрытия потока. Если Вам
необходимо убедится, что данные физически сохранены на
диске, то используйте fsync(2). (это зависит также и от
вашего дискового оборудования.)