如何在C/C++中强制删除被锁定的文件?

6

如何使用C/C++编程强制删除被操作系统或其他程序锁定的文件?该功能应类似于软件“Unlocker”,位于http://ccollomb.free.fr/unlocker


相关问题:http://stackoverflow.com/questions/301174/delete-a-file-in-use-in-runtime - CesarB
3个回答

5

4

如果您使用的是Win32系统,官方的做法是将文件标记为在重启时删除,并要求用户重新启动计算机。使用MoveFileEx函数并传入MOVEFILE_DELAY_UNTIL_REBOOT标志(目标路径设为NULL)即可将文件标记为在重启时删除。


相关回答:https://dev59.com/THVC5IYBdhLWcg3wixw0 - CesarB

1

这实际上取决于底层文件系统。

例如,在Linux上,ext3支持不属于标准Unix读/写/执行/用户/组/全局范例的文件属性。

这里有一个可用属性的很好的摘要:

第一次遇到时真的让我疯狂,即使作为root用户,甚至在从可启动CD重新启动后,我仍然无法从硬盘驱动器中删除文件...顺便说一下,这对于恶作剧的创意使用几乎是无限的... :)


这与属性无关,而是涉及到正在运行的进程使用了锁定的文件。唯一的方法就是终止该进程。 - Michael Haephrati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接