当进程被任务管理器等进程终止时,如何释放资源?有没有办法在进程关闭之前调用函数?
如果您的进程被终止,您实际上无能为力。根据定义,杀死一个进程就是杀死它。该进程没有机会运行任何代码。这很大程度上是“设计使然”。
想象一下,您可以注册一个例程,当您的进程被用户(或另一个进程)终止时调用该例程。它会做什么?进程中的所有其他线程都将处于不确定状态,您将如何与它们同步?请记住,这个想法是需要终止该进程。
另一种情况甚至更困难:您的代码是良性的并且试图做正确的事情 - 例如清理并成为良好的系统公民。有些代码不是。想象一下,如果操作系统允许为正在被杀死的进程运行代码,这对恶意软件作者来说将是多么大的好处。对于以标准用户权限运行的恶意进程来说,这已经足够糟糕了,对于任何以管理权限运行的恶意进程来说,这都非常糟糕。
关键终结和结构化异常处理不会解决这个根本问题。
从好的方面来说,当进程被终止时,操作系统将释放它所知道的所有资源,即内存和内核对象。那些不会泄漏。但资源管理器不知道您的进程,因此无法对其进行清理。
解决这个问题的一种方法是建立一个监视进程来跟踪其他进程的状态并进行清理。您可以通过简单的流程或服务来完成此操作。您还可以考虑某种 shell 扩展,它有自己的线程来执行相同的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)