Временный файл удален
Я работаю над исходным кодом ed (да, редактор). Программа использует рабочий файл, открытый с помощью tmpfile, в качестве буфера. Но всякий раз, когда я запускаю программу, lsof всегда сообщает о временном файле как удаленном! (а на самом деле его там нет). Зачем?
0 ответов
Поскольку файл может существовать на диске, не имея ассоциированного с ним имени файла, многие программы откроют файл и затем быстро отсоединят его. Содержимое файла можно продолжать изменять и читать с помощью открытых файловых дескрипторов файла, и оно не будет фактически удалено с диска, пока все открытые файловые дескрипторы не будут закрыты.
(это для платформ *nix/POSIX AFAICT; Windows обрабатывает файлы по-разному, предотвращая отсоединение, если программа имеет дескриптор файла все еще открыт, и, таким образом, часто требуется перезагрузка для обновлений, чтобы принудительно закрыть эти открытые дескрипторы файлов, чтобы содержимое файла можно заменить)