在 Windows 平台上操作时,我们经常会因为某些意外的操作而导致文件被死锁在某个进程下而无法释放,比如我们执行了某个安装程序后当删除该程序时提示无法完成该操作,因为该文件正被其他程序所使用,等等诸如此类的场景。尤其是经常会遇到插上的 U 盘或移动硬盘不能被正常弹出。这类情况发生后唯一解决的方法就是重新启动一次操作系统,或者事先安装个什么强制删除文件或弹出移动存储的小程序。这里不讨论该问题的发生到底是系统原因还是程序原因或者是用户操作原因所致,不过在 Windows 7 中微软的资源监视器已经能够协助我们解决此类的问题。
为了能够重现问题解决得方法,我设计了一个场景。在桌面上我建立了一个名为 test 的目录,之后我在 cmd 中定位到这个路径,实现程序进程对文件的占用,以模仿文件被死锁在程序进程中。之后我执行删除该目录的操作,此时系统会提示当前操作无法完成,该目录或文件被其他程序打开的提示。默认情况下,我们如果知道是哪个程序进程占用了文件,那么可以直接去终止进程,否则之前所提到的尴尬场景就出现了,我们不可能去尝试终止所有的进程来完成这个操作。
但是现在我们只需要打开 Windows 7 的 Windows Task Manager(Windows 任务管理器),并切换到“Performance”(性能)选项卡,单击“Resource Monitor”(资源监视器),切换至“CPU”选项卡,在“Associated Handles”(关联的句柄)内容框的“Search Handles”(搜索句柄)文字框中输入文件或目录的名称,这样资源监视器就能搜索到是哪些程序进程在使用这些目录或文件。
找到了目标,我们就可以终止该进程重新完成之前的操作了。下面是测试时的截图很容易理解和使用。
Windows 7 的资源监视器却是强大了很多,更加方便我们了解和掌握当前系统的运行情况。最后还需要注意的是,虽然这个方法可以有效地解决问题,但是也需要承担强行终止进程所引发的其他意外错误!
本文转自 苏繁 51CTO博客,原文链接http://blog.51cto.com/goxia/219286,如需转载请自行联系原作者