Tim*_*Tim 0 c linux file hardlink
来自APUE
Run Code Online (Sandbox Code Playgroud)#include <unistd.h> int unlink(const char *pathname);
仅当链接计数达到0时才能删除文件的内容.另一个条件是防止文件的内容被删除: 只要某个进程打开文件,其内容就不会被删除.当文件关闭时,内核首先检查具有文件打开的进程数的计数.如果此计数达到0,则内核检查链接计数; 如果为0,则删除文件的内容.
如果某个execve()
进程正在使用某个文件,它是否将其视为"进程打开文件"?
如果某个进程打开或execve()
编辑了文件,会unlink()
立即返回0或-1,还是等到进程关闭文件或execve()
完成运行并执行其工作?
1)进程via继承的文件句柄execve
将保持打开状态,直到显式关闭或进程退出.
2)unlink
不会阻止.它将简单地删除路径并减少硬链接文件的引用计数,此时文件系统可以删除引用的文件,并在任何进程不再打开文件后释放与其关联的空间.unlink
除非出现I/O或权限错误等,否则将返回0
归档时间: |
|
查看次数: |
316 次 |
最近记录: |