当前位置: 技术问答>linux和unix
如何使得调用unlink函数出错,文件存在的情况下。
来源: 互联网 发布时间:2016-01-10
本文导语: 想法: 打开要删除的文件,然后在程序中调用unlink函数删除此文件,但失败,unlink函数返回成功。 请教: 如何使unlink函数失败,在文件存在,且不修改程序的情况下。 | 你是想要某个文...
想法:
打开要删除的文件,然后在程序中调用unlink函数删除此文件,但失败,unlink函数返回成功。
请教:
如何使unlink函数失败,在文件存在,且不修改程序的情况下。
打开要删除的文件,然后在程序中调用unlink函数删除此文件,但失败,unlink函数返回成功。
请教:
如何使unlink函数失败,在文件存在,且不修改程序的情况下。
|
你是想要某个文件在被打开的情况下不能被删除吧?
对于linux,似乎是没有办法,至少我不知道。被进程A打开的文件可以被其他进程删除,但是A仍可以访问文件,直至A关闭文件或者进程退出,此时文件的空间才会被真正删除。在A关闭文家之前,你可以查看proc里面的A打开的fd(/proc/xxx/fd,其中xxx是A的进程号),可以看到被删除的文件指向deleted,此时你如果直接将proc下的这个文件cp到其他地方,可以复制出文件,有点像回复删除。
另外,linux下的文件锁也无法保护你打开的文件。你只能通过文件权限来控制文件的安全性,可以设置文件的属主及权限,设置ACL。
对于linux,似乎是没有办法,至少我不知道。被进程A打开的文件可以被其他进程删除,但是A仍可以访问文件,直至A关闭文件或者进程退出,此时文件的空间才会被真正删除。在A关闭文家之前,你可以查看proc里面的A打开的fd(/proc/xxx/fd,其中xxx是A的进程号),可以看到被删除的文件指向deleted,此时你如果直接将proc下的这个文件cp到其他地方,可以复制出文件,有点像回复删除。
另外,linux下的文件锁也无法保护你打开的文件。你只能通过文件权限来控制文件的安全性,可以设置文件的属主及权限,设置ACL。
|
用gdb跟,然后修改返回值