我有一个 Windows 控制台应用程序,它将运行很长一段时间。这是内部开发的,测试表明,随着时间的推移,内存使用量会增加,并随之产生其他不良影响。开发人员无法在发布前及时纠正所有问题,因此我正在寻找一种方法来定期结束和重新启动该进程。我已经有一个 Windows 计划任务,它可以运行批处理文件,检查进程是否正在运行,如果没有,则启动它。
现在我需要一些可以正常停止它的东西。该应用程序已将 CTRL-BREAK 事件用作受控关闭的请求。我想向它发送 CTRL-BREAK,如果一段时间后它仍未结束,那么我可以使用 taskkill 强制结束它。taskkill 似乎向它提供了 CTRL-CLOSE 事件。有没有办法从命令行向进程提供 CTRL-BREAK?
答案1
您可以使用这个小实用程序发送控制中断。
http://www.latenighthacking.com/projects/2003/sendsignal/
笔记start
如果您从批处理文件运行它,请确保使用。
答案2
我不知道中断事件是否被视为应用程序的正常关闭。
也就是说,在 sysinternals 下搜索 ps 实用程序,这是 Microsoft 提供的免费程序。有一个 pskill 命令可用于终止应用程序,我相信还有一个 pslist 可用于获取进程 ID。解析它并向其发送终止信号,看看是否适合您。