Временный файл удален

Я работаю над исходным кодом ed (да, редактор). Программа использует рабочий файл, открытый с помощью tmpfile, в качестве буфера. Но всякий раз, когда я запускаю программу, lsof всегда сообщает о временном файле как удаленном! (а на самом деле его там нет). Зачем?

0 ответов

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

(это для платформ *nix/POSIX AFAICT; Windows обрабатывает файлы по-разному, предотвращая отсоединение, если программа имеет дескриптор файла все еще открыт, и, таким образом, часто требуется перезагрузка для обновлений, чтобы принудительно закрыть эти открытые дескрипторы файлов, чтобы содержимое файла можно заменить)

Другие вопросы по тегам