我对如何删除(删除)文件但仍被进程链接并仍被写入文件感到困惑。我的理解是文件名是目录中指向inode的条目。inode 是一种数据结构,它列出了构成文件的逻辑块。当一个文件被删除时,它的目录条目被删除,但数据和 inode 保持不变。内核检查是否有其他指向该 inode 的链接,如果没有,则删除该 inode 并回收内存。但是这样一个无名的文件是怎么产生的呢?每当我在 python 中打开一个文件并读取或写入它时,它都存在于磁盘上。但是当我在我的 Mac 上发出这个命令时:
lsof +L1
我得到一个包含 300 个文件的列表!根据我的阅读,这些文件只有一个链接,即写入它们的进程的链接。如果这些文件也有目录条目,那么至少会有两个链接。那么,在此过程中,写入这些文件的进程删除了它们的目录条目?为什么?如何?