【发布时间】:2023-03-10 03:06:01
【问题描述】:
我正在创建一个命令行应用程序,它会生成一个进程(由用户定义的命令,通常是 HTTP 服务器),当应用程序的工作完成后,我想让进程知道它应该终止。
在 UNIX 中,我可以通过发送 SIGTERM 来做到这一点,如果进程没有结束,那么我可以通过 SIGKILL 残忍地杀死它。
在 Windows 中,我很难找到 SIGTERM 方案的替代方案。我知道有taskkill /PID XXXX(没有/f!),但是
- 我没有找到关于
taskkill /PID XXXX在后台做什么的信息,因此我无法对其进行测试。我找不到如何处理taskkill /PID XXXX在进程端发送的任何内容。 - 它似乎不适用于
cmd.exe中的命令。我尝试在一个cmd.exe中运行一个简单的服务器进程,获取它的 PID 并在另一个窗口中运行taskkill /PID XXXX它,但 taskkill 拒绝这样做:ERROR: The process with PID XXXX could not be terminated. Reason: This process can only be terminated forcefully (with /F option).
所以我的问题是:如何通知 Windows 中的命令行进程它应该终止而不强制终止它?待终止进程端如何接收并处理此类消息?
【问题讨论】: