Sous Windows, comment puis-je gracieusement demander à un programme en cours d'exécution de se terminer?

17

Sous Unix ou Linux, il est facile de demander à une application en cours d'exécution de se terminer: vous lui envoyez le signal SIGTERM. Si son ID de processus est 1234, vous pouvez simplement exécuter kill 1234ou kill -s TERM 1234ou kill -15 1234.

Comment puis-je faire la même chose sous Windows?

Si je me souviens bien, la fonction «Fin de tâche» du Gestionnaire des tâches (et non sa fonction «Fin de processus») faisait ce que je voulais. Mais, depuis Windows 8.1, ce n'est plus si doux; lorsque j'utilise la fonction, cela me fait perdre des données non enregistrées.

Je ne veux pas écrire de code pour ce faire. Si je le faisais, je demanderais sur Stack Overflow. :)

inoubliableidSupportsMonica
la source
2
Si vous êtes un développeur de logiciels et que vous souhaitez le faire par programme, consultez la question Stack Overflow associée sur la façon de demander avec élégance à un processus de se terminer .
inoubliableidSupportsMonica
4
Windows n'a rien de gracieux ........
Moab

Réponses:

17

taskkill.exe

Andy E écrit que vous pouvez utiliser taskkill.exe.

Pour terminer le processus avec l'ID de processus 1234:

taskkill /pid 1234

Pour terminer notepad.exe:

taskkill /im notepad.exe

Pour plus d'aide:

taskkill /?

Il ajoute:

Le /fcommutateur forcerait la mise à mort, mais ne pas l'utiliser envoie simplement le signal de terminaison de sorte que l'application se ferme correctement.

Il a raison. J'ai essayé d'utiliser taskkill.exe (sans /f) pour terminer le Bloc-notes, et cela a fonctionné comme prévu. Le bloc-notes m'a demandé si je voulais ou non enregistrer le texte non enregistré que j'avais entré.

J'utilise la version familiale de Windows 8.1. Il semble que taskkill.exeWindows soit inclus sans frais supplémentaires. C'est dedans c:\windows\system32.

Ou tout simplement vous déconnecter

Si vous ne voulez pas vous soucier de tout cela, déconnectez-vous simplement de votre compte d'utilisateur Windows, puis reconnectez-vous.

Applications console

Concernant les applications console (par exemple PowerShell), Chris Becke ajoute :

Il n'existe aucun moyen réel de fermer les applications de console avec élégance sous Windows. Ils doivent prendre en charge une sorte de mécanisme de fermeture gracieux.

inoubliablesid
la source
Notez que cela ne reproduit pas exactement ce qui se passe lors de la déconnexion ou de l'arrêt; pour cela, voir stackoverflow.com/questions/520910/…
Matt McHenry
5

Vous pouvez utiliser rmlogotest.exe(l'outil de test du logo du gestionnaire de redémarrage). Cet utilitaire gratuit, écrit par Microsoft, fait partie du Kit de certification des applications Windows.

Pour obtenir la dernière version du Kit de certification des applications Windows, téléchargez et exécutez le programme d'installation du SDK Windows. (Vous pouvez trouver le dernier programme d'installation du SDK Windows en effectuant une recherche Google.) Décochez toutes les cases à l'exception de la case Kit de certification des applications Windows. Attendez que le kit soit téléchargé et installé. Si je me souviens bien, le kit fait quelques centaines de mégaoctets.

rmlogotest.exesera probablement disponible C:\Program Files (x86)\Windows Kits\10\App Certification Kitsi vous utilisez la version 10 du SDK Windows.

Ouvrez une invite de commande. Accédez au répertoire approprié. Entrez rmlogotestensuite un espace puis le numéro d'identification du processus.

Si le processus est "Restart Manager aware", rmlogotestle redémarrera avec élégance et vous indiquera "Logo Validation Passed". Sinon, rmlogotestil lui demandera de se terminer sans problème, puis pourra vous dire "Échec de la validation du logo".

J'ai essayé d'utiliser rmlogotest.exepour mettre fin au Bloc-notes et cela a fonctionné comme prévu. Le bloc-notes m'a demandé si je voulais ou non enregistrer le texte non enregistré que j'avais entré.

(Si vous vous demandez ce qu'est et ce que fait Restart Manager, laissez-moi vous expliquer. Restart Manager fait partie de Windows et est utilisé par Windows Installer 4.0 et versions ultérieures. Lorsque Windows Installer doit écraser ou supprimer un fichier ouvert, il utilise un étape. Il indique à Restart Manager de mettre fin au processus qui utilise le fichier. Il écrase le fichier. Il indique ensuite à Restart Manager de redémarrer le processus.)

inoubliableidSupportsMonica
la source
0

GnuWIN32 possède des ports Windows d'utilitaires Linux courants, y compris kill.exe

http://gnuwin32.sourceforge.net/

Il prend en charge les signaux suivants par leur nom ou un nombre

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