Windows到底如何杀死进程?


10

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

如何在Windows中“杀死”进程?OS和过程如何处理?操作系统执行什么动作?是否有跨平台的方式来响应杀死/关闭请求?


1
对于读者:信号15是SIGTERM,信号9是SIGKILL
user1686

如果您的问题已得到回答,请接受答案。
奥利弗2014年

Answers:


11

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

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


1
+ 1,WM_CLOSE已发送到应用;在X时间要求用户强制杀死之后,Windows从调度程序中删除该进程,关闭所有句柄(如果内核正在处理这些句柄之一,则可以使进程跳闸),然后回收内​​存空间(这是真正的简短版本)的过程)。
克里斯·S

第三种方法是ntsd -p <pid> -c q,它使用ntsd调试器。我不确定以这种方式杀死程序会发生什么。(戳@Chris
user1686

5
如果程序没有窗口会怎样?
IttayD 2010年

1
@IttayD:然后,在任务管理器中没有条目可用于:)我刚刚尝试过的操作taskkill,它回答:“此过程只能强制终止(使用/ F选项)。” 是的,剩下的唯一选择是TerminateProcess()
user1686 2010年

1
@IttayD:请注意,在Windows上,服务(守护程序)的编写方式与用户应用程序不同;他们可以从Service Manager接收状态查询和控制请求,因此可以轻松停止。
user1686 2010年

0

Sysinternals(现在是Microsoft的一部分)提供了一个名为pskill的实用程序,可从命令行使用该实用程序杀死本地系统或远程系统上的进程。

在GUI环境中杀死Windows进程的通常方法是使用任务管理器。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.