Вторник, 21.11.2017, 22:18
Приветствую Вас, Гость
Главная » 2014 » Январь » 13 » Закрытие файлов
09:56
Закрытие файлов
После того как работа с дескриптором файла в программе завершена, можноудалить связь между дескриптором и соответствующим файлом, применив системныйвызов closeO:finclude <unistd.h>int close (int fd);

Когда closeO срабатывает, проецирование открытого дескриптора файла fdна сам файл прекращается и процесс отсоединяется от файла. Данный файловыйдескриптор больше не является допустимым, и ядро может повторно использоватьего в качестве возвращаемого значения для последующих вызововореп() и creatO. Вызов closeC) в случае успеха возвращает значение 0. В случаеошибки он возвращает -1 и соответствующим образом устанавливает переменнуюеггпо. Применять его просто:if (close (fd) == -1)perror ("e;close"e;).Обратите внимание, что закрытие файла не имеет никакого отношенияк тому моменту, когда файл сбрасывается на диск. Если в приложении нужноудостовериться, что файл будет зафиксирован на диске до того, как он будет закрыт,то для этого необходимо использовать один из вариантов синхронизации,которые были рассмотрены в разделе ?Синхронизированный ввод-вывод?.У операции закрытия файла есть тем не менее некоторые побочные эффекты.Когда закрывается последний открытый дескриптор файла, ссылающийсяна файл, структура данных, представляющая этот файл внутри ядра, освобождается.Когда структура данных освобождается, она отсоединяет находящуюсяв памяти копию структуры inode, связанной с файлом. Если больше ничего неудерживает inode в памяти, эта структура также может быть освобождена (онаможет и остаться там, так как ядро кэширует структуры inode для улучшенияпроизводительности, но не обязана). Если файл отсоединяется от диска в момент,когда он еще открыт, то он физически не удаляется до тех пор, пока не будетзакрыт, а его inode не будет удалена из памяти. Следовательно, вызовcloseO может приводить к итоговому физическому удалению отсоединенногофайла с диска.
ремонт электроплит в москве
Просмотров: 458 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: