在Linux VFS中,如何处理这种情况:说一个进程正在查找文件A..got它的引用,同时文件A被另一个进程删除。第一个进程成功找到了A,但是当它想要对它执行操作时,该文件就不再存在了。
答案 0 :(得分:0)
只要进程在文件的路径名上成功调用open
,就会为其分配文件描述符。此描述符不再与路径名相关,因此当名称为remove()
d之后,仍可以读取或写入该文件。它还占用磁盘空间。
您自己研究的其他关键字是:取消链接,硬链接。
但是在打开文件之前,显而易见的事情会发生,并且您无法保证对chmod
或open
的两次连续调用会影响同一文件。
这也是fstat
或fchmod
或fchdir
等函数存在的原因。