2

我正在研究 ed(是的,编辑器)源代码。该程序使用一个用 tmpfile 打开的临时文件作为缓冲区。但是,每当我运行程序时, lsof 总是将临时文件报告为已删除!(实际上它不存在)。为什么?

4

1 回答 1

0

因为文件可以存在于磁盘上而没有与之关联的文件名,所以许多程序会打开一个文件,然后立即取消链接。文件内容可以通过文件上的打开文件句柄继续修改和读取,并且在所有打开的文件句柄关闭之前实际上不会从磁盘中删除。

(这适用于 *nix/POSIX 平台 AFAICT;Windows 以不同方式处理文件,如果程序的文件句柄仍然打开,则防止取消链接,因此升级通常需要重新启动以强制关闭那些打开的文件句柄,以便文件内容可以更换)

于 2019-07-08T18:17:50.690 回答