On Windows, how can I gracefully ask a running program to terminate?

17

4

On Unix or Linux, it's easy to gracefully ask a running application to terminate: you send it the SIGTERM signal. If its process ID is 1234, you can simply run kill 1234 or kill -s TERM 1234 or kill -15 1234.

How can I do the same thing in Windows?

If I recall correctly, Task Manager's "End Task" feature (not its "End Process" feature) used to do what I want. But, as of Windows 8.1, it's no longer so gentle; when I use the feature, it causes me to lose unsaved data.

I don't want to write any code in order to do this. If I did, I would ask on Stack Overflow. :)

unforgettableidSupportsMonica

Posted 2015-08-19T02:09:12.213

Reputation: 983

2

If you're a software developer, and you want to do this programmatically, see the related Stack Overflow question on how to gracefully ask a process to terminate.

– unforgettableidSupportsMonica – 2015-08-19T02:15:10.357

4There is nothing graceful about Windows........ – Moab – 2015-08-19T14:59:00.063

Answers

17

taskkill.exe

Andy E writes that you can use taskkill.exe.

To terminate the process with process ID 1234:

taskkill /pid 1234

To terminate notepad.exe:

taskkill /im notepad.exe

For more help:

taskkill /?

He adds:

The /f switch would force the kill, but not using it just sends the termination signal so the application closes gracefully.

He's right. I tried using taskkill.exe (without /f) to terminate Notepad, and it worked as expected. Notepad asked me whether or not I wanted to save the unsaved text which I'd entered.

I'm using the home version of Windows 8.1. It looks like taskkill.exe came included with Windows at no extra charge. It's in c:\windows\system32.

Or just log out

If you don't want to bother with any of this, simply log out of your Windows user account, then log back in again.

Console applications

Regarding console applications (e.g. PowerShell), Chris Becke adds:

There is no real way to close console applications gracefully on Windows. They need to support some kind of graceful close mechanism.

unforgettableidSupportsMonica

Posted 2015-08-19T02:09:12.213

Reputation: 983

Note that this does not exactly replicate what happens on logout or shutdown; for that, see http://stackoverflow.com/questions/520910/how-to-simulate-windows-shutdown-for-debugging

– Matt McHenry – 2016-01-28T21:54:23.647

5

You can use rmlogotest.exe (the Restart Manager Logo Test Tool). This freeware utility, written by Microsoft, is part of the Windows App Certification Kit.

To get the latest version of the Windows App Certification Kit, download and run the Windows SDK installer. (You can find the latest Windows SDK installer by doing a Google search.) Uncheck all the boxes except for the Windows App Certification Kit box. Wait for the kit to be downloaded and installed. If I recall correctly, the kit is a couple hundred megabytes.

rmlogotest.exe will probably be in C:\Program Files (x86)\Windows Kits\10\App Certification Kit if you're using version 10 of the Windows SDK.

Open a command prompt. Change to the correct directory. Enter rmlogotest then a space then the process's process ID number.

If the process is "Restart Manager aware", rmlogotest will gracefully restart it and tell you "Logo Validation Passed". Otherwise, rmlogotest will ask it to gracefully terminate, then may tell you "Logo Validation Failed".

I tried using rmlogotest.exe to terminate Notepad, and it worked as expected. Notepad asked me whether or not I wanted to save the unsaved text which I'd entered.

(In case you wonder what Restart Manager is and does, let me explain. Restart Manager is part of Windows, and is used by Windows Installer 4.0 and up. When Windows Installer needs to overwrite or delete an open file, it uses a three-step process. It tells Restart Manager to gracefully end the process which is using the file. It overwrites the file. Then it tells Restart Manager to start the process again.)

unforgettableidSupportsMonica

Posted 2015-08-19T02:09:12.213

Reputation: 983

0

GnuWIN32 has windows ports of common linux utils including kill.exe

http://gnuwin32.sourceforge.net/

It supports the following signals by name, or a number

λ kill -l                                                                                                                                                                                                                                                                
INT                                                                                                                                                                                                                                                                      
ILL                                                                                                                                                                                                                                                                      
FPE                                                                                                                                                                                                                                                                      
KILL                                                                                                                                                                                                                                                                     
SEGV                                                                                                                                                                                                                                                                     
TERM                                                                                                                                                                                                                                                                     
CHLD                                                                                                                                                                                                                                                                     
ABRT             

teknopaul

Posted 2015-08-19T02:09:12.213

Reputation: 298