来自APUE
#include int unlink(const char *pathname);
只有当链接数达到0时,才能删除file的内容。另一个条件是防止删除file的内容:只要某个进程具有打开的file ,它的内容就不会被删除。当file关闭时,内核first会检查打开file的进程数。如果该计数达到0,则内核检查链接计数;如果该计数为0,则删除file的内容。
execve()
在进程中使用,它是否将其计为“该进程打开了该文件”?unlink()
将立即返回0或-1,还是等到该进程关闭该文件或execve()
完成运行并执行其作业?<execve()
>G213
发布于 2018-06-10 05:16:47
1)进程通过execve
继承的文件句柄将保持打开状态,直到显式关闭或进程退出。
2) unlink
不会被阻塞。它将简单地移除路径并递减硬链接文件的引用计数,此时,一旦文件不再被任何进程打开,文件系统就可以移除被引用的文件并释放与其相关联的空间。除非发生I/O或权限等错误,否则unlink
将返回0。
https://stackoverflow.com/questions/50778585
复制相似问题