问题
On Microsoft Technet I can read that taskkill
has a /f
parameter to kill a process forcefully. I wonder what this does internally, to understand the impact of such an action.
taskkill
(without /f
) does not simply send a WM_CLOSE message to the process, otherwise my application would ask whether or not to save the open documents. This makes me assume that it already operates on a TerminateProcess (MSDN) level. However, TerminateProcess
does not have a parameter for forcing a kill.
So, what do taskkill
and taskkill /f
do internally?
I read the related question Difference between C# Process.Kill() and Taskkill but it does not have an answer.
回答1:
Most likely taskkill /f
uses TerminateProcess, where as taskkill
without /f
just posts a WM_QUIT message (not WM_CLOSE). The docs says that TerminateProcess
unconditionally kills the process.
You can try following experiments:
- Launch notepad.exe and type a few chars in the notpad window
- Type
taskkill /f /im notepad.exe
. Notepad will quit immediately
Now do this:
- Launch notepad.exe and type a few chars in the notpad window
- Type
taskkill /im notepad.exe
. Notepad won't quit immediately but it will quit ask if you want to save modifiactions.
来源:https://stackoverflow.com/questions/32346219/difference-between-taskkill-and-taskkill-f