taskkill和taskkill / f之间的区别

时间:2015-09-02 06:41:58

标签: windows winapi internals

Microsoft Technet上我可以看到taskkill有一个/f参数可以强行终止进程。我想知道这在内部是做什么的,以了解这种行为的影响。

taskkill(没有/f)不会简单地向进程发送WM_CLOSE消息,否则我的应用程序会询问是否保存打开的文档。这使我假设它已经在TerminateProcess (MSDN)级别上运行。但是,TerminateProcess没有用于强制终止的参数。

那么,taskkilltaskkill /f内部做了什么?

我阅读了相关问题Difference between C# Process.Kill() and Taskkill,但没有答案。

1 个答案:

答案 0 :(得分:3)

最有可能taskkill /f使用TerminateProcess,而taskkill没有/f只会发布WM_QUIT消息(而不是WM_CLOSE)。文档说TerminateProcess无条件地杀死了这个过程。

您可以尝试以下实验:

  1. 启动notepad.exe并在notpad窗口中键入几个字符
  2. 输入taskkill /f /im notepad.exe。记事本将立即退出
  3. 现在这样做:

    1. 启动notepad.exe并在notpad窗口中键入几个字符
    2. 输入taskkill /im notepad.exe。记事本不会立即退出,但它会退出询问您是否要保存修改。