5.1.5.1. Удаление открытых файлов

5.1.5.1. Удаление открытых файлов

С самых первых дней Unix было возможно удалять открытые файлы. Просто вызовите unlink() с именем файла после успешного вызова open() или creat().

На первый взгляд, это кажется странным. Поскольку система освобождает блоки данных, когда счетчик ссылок на файл достигает нуля, возможно ли использовать открытый файл?

Ответ — да, вы можете продолжить использовать открытый файл обычным способом. Система знает, что файл открыт, поэтому она откладывает освобождение хранилища файла до тех пор, пока не будет закрыт последний дескриптор файла. Когда файл вообще больше не используется, память освобождается.

Эта операция также оказывается полезной: это простой способ для программы получить временный файл, который гарантированно будет и конфиденциальным, и автоматически освобождаемым по завершении использования.

/* Получение конфиденциального временного хранилища,

   проверка ошибок для краткости опущена */

int fd;

mode_t mode = O_CREAT | O_EXCL | O_TRUNC | O_RDWR;

fd = open("/tmp/myfile", mode, 0000); /* Открыть файл */

unlink("/tmp/myfile"); /* Удалить его */

/* ... продолжить использование файла... *

close(fd); /* Закрыть файл, освободить память */

Недостатком такого подхода является то, что вышедшее из-под контроля приложение может заполнить систему открытыми, но анонимными файлами, в этом случае администраторам придется попытаться найти и завершить этот процесс. В прежние дни могли потребоваться перезагрузка и проверка целостности файловой системы; к счастью, на современных системах это требуется исключительно редко.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Удаление файлов и папок

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Удаление файлов и папок Удалить файл или папку гораздо проще, чем, например, скопировать или переименовать. Для удаления объектов существует несколько способов. Чтобы удалить ненужный файл, достаточно знать один способ. Однако чтобы по ошибке не удалить нужный объект,


20.3.3. Удаление файлов в Unix необратимо

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

20.3.3. Удаление файлов в Unix необратимо Пользователи с опытом работы в системе VMS или те, кто помнит TOPS-20, часто испытывают недостаток средств для контроля версий файлов, которые были характерны для этих систем. Открытие существующего файла для записи или удаления


Удаление файлов занятий

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Удаление файлов занятий После завершения работы с книгой, можно освободить дисковое пространство, удалив файлы занятий, установленные с компакт- диска. Процедура удаления удалит все, что было создано в папках с файлами занятий во время выполнения упражнений.1. На панели


20.3.3. Удаление файлов в Unix необратимо

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

20.3.3. Удаление файлов в Unix необратимо Пользователи с опытом работы в системе VMS или те, кто помнит TOPS-20, часто испытывают недостаток средств для контроля версий файлов, которые были характерны для этих систем. Открытие существующего файла для записи или удаления фактически


11.4.4. Удаление файлов

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

11.4.4. Удаление файлов Удаление файла — это удаление указателя на его inode и удаление содержимого файла, если не остается ни одой жесткой ссылки на него. Если любой процесс держит файл открытым, то inode этого файла предохраняется до тех пор, пока финальный процесс не закроет


Закрытие открытых файлов

Из книги VBA для чайников автора Каммингс Стив

Закрытие открытых файлов Будьте аккуратными - после того как работа с файлами завершена, их следует закрыть.Закрытие файла гарантирует, что все хранимые в памяти изменения действительно будут записаны на диск, а ресурсы, занимаемые файлами, освободятся и станут


Копирование, изменение и удаление файлов

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

Копирование, изменение и удаление файлов С помощью подходящих методов объект File можно скопировать, переместить или удалить:objFilel.Сору "с:героические усилия"objFilel.Move "с:минимальные результаты"objFile l.DeleteЗаметьте, что если вы не меняете имя файла, в операторах, использующих


12.2 Копирование, перемещение и удаление файлов

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

12.2 Копирование, перемещение и удаление файлов Хоть я и обещал не объяснять основы использования компьютера, позволю вам напомнить несколько полезных сочетаний клавиш, используемых для управления файлами и папками:• Ctrl—C — копировать выделенные объекты в буфер


4.2.4. Удаление файлов и папок. Корзина

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

4.2.4. Удаление файлов и папок. Корзина Удалить файл (папку) очень просто — щелкните на нем правой кнопкой мыши и выберите команду Удалить (или нажмите клавишу <Del> на клавиатуре). Можно удалить сразу группу файлов и папок: для этого сначала выделите группу объектов, а затем


Пример 28-1. Удаление cookie-файлов

Из книги Linux программирование в примерах автора Роббинс Арнольд

Пример 28-1. Удаление cookie-файлов if [ -f ~/.netscape/cookies ] # Удалить, если имеются.then rm -f ~/.netscape/cookiesfiln -s /dev/null ~/.netscape/cookies# Теперь, все cookie-файлы, вместо того, чтобы сохраняться на диске, будут "вылетать в трубу"./dev/zeroПодобно псевдоустройству /dev/null, /dev/zero так же является


4.4.2.2. Закрытие всех открытых файлов

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

4.4.2.2. Закрытие всех открытых файлов Открытые файлы наследуются порожденными процессами от своих родительских процессов. Фактически они являются общими. В частности, общим является положение в файле. Подробности мы оставим для дальнейшего обсуждения в разделе 9.1.1.2


Удаление файлов и папок

Из книги Как приручить компьютер за несколько часов автора Ремнева Ирина

Удаление файлов и папок С помощью команд rundll32.exe можно удалить каталог или файл. Для этого достаточно воспользоваться приведенной далее командой: rundll32.exe ADVPACK.dll, DelNodeRunDLL32 «путь к кaтaлогу или файлу». Функция DelNodeRunDLL32 была написана специально для вызова с помощью команды


Удаление файлов

Из книги автора

Удаление файлов Удаление файлов напоминает их копирование, поэтому рассмотрим этот процесс лишь поверхностно — в подсказках к листингу 15.8. Для определения блоков, содержащих описания удаляемых файлов, используется ключевое слово DelFiles.Листинг 15.8. Удаление


12.5. Удаление файлов и каталогов

Из книги автора

12.5. Удаление файлов и каталогов Постановка задачи Вы создали на диске ряд файлов и/или каталогов, и они вам больше не нужны. Вы хотите их


Удаление файлов

Из книги автора

Удаление файлов Если определенные файлы становятся ненужными, их можно выбросить в корзину (не в прямом смысле, конечно). Как это сделать?1) Отметим объекты, которые необходимо удалить.2) Щелкнем правой кнопкой мыши на одном из отмеченных значков и выберем в появившемся