在 linux VFS 中,如何处理这种情况:假设一个进程正在查找文件 A.. 得到它的引用,同时文件 A 被另一个进程删除。第一个进程成功找到了A,但是当它要对其进行操作时,该文件已经不存在了。
最佳答案
一旦进程成功调用了文件路径名上的open
,它就会被分配一个文件描述符。这个描述符已经和路径名没有关系了,所以当名字被remove()
之后,文件仍然可以被读取或写入。它还占用磁盘空间。
您自己研究的其他关键字是:取消链接、硬链接(hard link)。
但是在文件打开之前,明显的事情会发生,您不能保证对 chmod
或 open
的两次连续调用会影响同一个文件。
这也是 fstat
或 fchmod
或 fchdir
等函数存在的原因。
关于linux - 路径查找和写入并发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7963337/