The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

close (2)
  • close (2) ( Solaris man: Системные вызовы )
  • close (2) ( FreeBSD man: Системные вызовы )
  • >> close (2) ( Русские man: Системные вызовы )
  • close (2) ( Linux man: Системные вызовы )
  • close (3) ( POSIX man: Библиотечные вызовы )
  • close (7) ( Linux man: Макропакеты и соглашения )
  • close (9) ( Solaris man: Ядро )
  •  

    ИМЯ

    close - закрыть файловый дескриптор  

    ОБЗОР

    #include <unistd.h>
    
    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 и дисковые квоты.

    Успешное выполнение close() не гарантирует, что данные успешно записаны на диск, потому что ядро откладывает запись. Обычно файловые системы не сбрасывают буфера на диск при закрытии потока. Если вам нужно удостовериться, что данные физически сохранены на диске, используйте fsync(2). (В этом случае всё будет зависить от железа и самого диска.)  

    СМОТРИ ТАКЖЕ

    open(2), fcntl(2), shutdown(2), unlink(2), fclose(3), fsync(2)  

    ПЕРЕВОД

    Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999-2000, Виктор Вислобоков <corochoone@perm.ru> 2003


     

    Index

    ИМЯ
    ОБЗОР
    ОПИСАНИЕ
    ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
    ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    ЗАМЕЧАНИЯ
    СМОТРИ ТАКЖЕ
    ПЕРЕВОД


    Поиск по тексту MAN-ов: 




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру