-2

我想找到一种删除文件的方法。某些文件无法使用删除命令以简单的方式删除。像恶意软件或打开的文件。有没有可以强制删除的命令?

4

2 回答 2

1

首先,您应该确定给定文件的 fd:Finding open file descriptors for a process linux ( C code )?

然后关闭它。它比强制更好。

于 2013-11-04T08:49:56.927 回答
1

在 Windows 中,当前打开的文件(包括操作系统在执行过程中保持打开的可执行文件,对于当前加载的 DLL 和驱动程序也是如此)无法删除,除非您先关闭文件(在这种情况下如果没有严重的欺骗和“欺骗操作系统”[例如关闭驱动程序中的文件,该文件最初不是由该驱动程序打开的],则可执行文件是不可能的)。

大多数实际应用程序(例如安装程序)解决此问题的方法是将文件删除添加到在关机或启动时运行的某些内容中,然后要求用户重新启动机器。[这也适用于用新文件复制旧文件,这在安装软件时更常见]。

在 Unix/Linux 环境下,只要你有足够的权限删除文件,就可以删除,但是如果文件是打开的,直到它被关闭才会被“真正删除”。在大多数情况下,这可能不会产生巨大的影响,但是比如说一些长时间运行的程序正在生成一个巨大的日志文件,那么你实际上不能通过删除文件来释放磁盘空间 - 它只会在文件被释放后被释放已经关了。重启长时间运行的程序是一个解决办法,但是如果你刚刚计算了PI的大量小数,还想继续,那可能不是解决办法。

这两种机制都旨在防止操作系统在它打开的文件突然丢失时突然出现意外 - 特别是当操作系统可能使用该文件作为通过内存分页系统读取/写入页面的基础时(内存映射文件或可执行文件。

简而言之,没有简单的解决方案可以保证可以删除任意文件。

于 2013-11-04T08:33:27.390 回答