16 votes

Comment Windows tue-t-il un processus, exactement ?

Je ne suis pas familier avec la façon dont les processus sont tués dans Windows. Dans Linux, un kill "à chaud" envoie un signal (15) que le processus peut gérer en instanciant un gestionnaire de signal. Un kill à froid est un signal (9) que le système d'exploitation gère en tuant le processus de force.

Comment puis-je "tuer" un processus dans Windows ? Comment cela est-il géré par le système d'exploitation et par le processus ? Quelles actions le système d'exploitation effectue-t-il ? Existe-t-il un moyen multiplateforme de répondre à une demande d'arrêt/de fermeture ?

5 votes

Pour les lecteurs : Le signal 15 est SIGTERM , 9 est SIGKILL .

1 votes

Veuillez accepter une réponse si votre question a été traitée.

15voto

Christian Deger Points 503

"Fin de la tâche" (et taskkill ) semble afficher un WM_CLOSE à la fenêtre du programme. (La même chose se produit lorsque vous cliquez sur le bouton × bouton "Fermer"). Si le programme ne se termine pas au bout d'un certain temps, l'utilisateur est invité à le fermer de force.

"Kill Process" et taskkill /f utiliser TerminateProcess() .

3 votes

+1, WM_CLOSE envoyé à l'application ; après X temps, demander à l'utilisateur de forcer la mise à mort, Windows retire le processus du planificateur, ferme tous les handles (ce qui peut faire trébucher le processus si le noyau traite l'un de ces handles), puis récupère l'espace mémoire (c'est la fonction version très courte du processus).

0 votes

La troisième voie est ntsd -p <pid> -c q qui utilise le ntsd Je ne suis pas sûr de ce qui se passe lorsqu'un programme est tué de cette manière. ( blague @Chris )

9 votes

Que se passe-t-il si le programme n'a pas de fenêtre ?

0voto

jason saldo Points 5036

Sysinternals (qui fait maintenant partie de Microsoft) propose un utilitaire appelé pskill qui peut être utilisé depuis la ligne de commande pour tuer des processus sur le système local ou sur des systèmes distants.

La façon habituelle de tuer des processus dans Windows dans un environnement GUI est d'utiliser le gestionnaire de tâches.

-1voto

tony roth Points 3814

Avec cygwin vous pouvez utiliser un kill multiplateforme !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X