Windows 究竟是如何杀死进程的?

Itt*_*ayD 12 windows kill process

我不熟悉如何在 Windows 中杀死进程。在 Linux 中,“热”终止发送信号 (15),进程可以通过实例化信号处理程序来处理该信号。冷终止是操作系统通过强制终止进程来处理的信号 (9)。

如何在 Windows 中“杀死”一个进程?操作系统和进程如何处理它?操作系统执行哪些操作?是否有响应终止/关闭请求的跨平台方式?

use*_*686 13

“结束任务”(和taskkill)似乎向WM_CLOSE程序的窗口发布一条消息。(单击ד关闭”按钮时也是如此。)如果程序在一段时间内没有退出,用户将收到强制结束程序的提示。

“杀死进程”并taskkill /f使用TerminateProcess().

  • 如果程序没有窗口会发生什么? (5认同)
  • @IttayD:请注意,在 Windows 上,服务(守护进程)的编写方式与用户应用程序不同;它们可以接收来自 Service Manager 的状态查询和控制请求,因此可以正常停止。 (3认同)
  • +1,WM_CLOSE 发送到应用程序;在 X 时间要求用户强制终止后,Windows 从调度程序中删除该进程,关闭所有句柄(如果内核正在处理这些句柄之一,这可能会绊倒进程),然后回收内​​存空间(这是*真正的短过程的版本*)。 (2认同)
  • @IttayD:然后在任务管理器中没有条目可以使用“结束任务”:) 我刚刚尝试了`taskkill`,它回答说:“这个进程只能被强制终止(使用 /F 选项)。” 所以是的,剩下的唯一选择是“TerminateProcess()”。 (2认同)

ton*_*oth -1

有了cygwin你就可以使用跨平台kill了!