405 votes

Vraiment tuer un processus dans Windows

Parfois, un programme sur une machine Windows devient fou et se bloque. Donc je vais appeler le gestionnaire des tâches et cliquez sur "terminer le Processus" bouton pour ça. Toutefois, cela ne fonctionne pas toujours; si je l'ai essayer assez de temps, puis il va généralement de mourir par la suite, mais je voudrais vraiment être en mesure de simplement de le tuer immédiatement. Sur Linux, j'ai juste l' kill -9 de garantir qu'un processus de mourir.

Est-il un programme ou une commande qui est livré avec Windows qui sera toujours tuer un processus? Gratuitement une application tierce, ce serait bien, bien que je préfère être en mesure de le faire sur les machines que j'asseoir pour la première fois.

334voto

pilif Points 7172

"Terminer le Processus" dans le Processus de Tabulation des appels TerminateProcess qui est le plus ultime de la façon dont windows sait pour tuer un processus.

Si elle ne disparaît pas, il est actuellement bloquée en attente sur une ressource de noyau (probablement un buggy pilote) et il n'y a rien (à moins d'un redémarrage) que vous pouvez faire pour rendre le processus aller loin.

Jetez un oeil à ce blog à l'entrée de wayback lorsque: http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Unix, comme Linux ont aussi ce problème où les processus pourrait survivre à un kill -9 si ils sont dans ce qui est connu comme "sans interruption du sommeil" (illustré par le haut et le ps comme l'etat D) à quel point le processus de sommeil, si bien qu'ils ne peuvent pas traiter des signaux entrants (qui est ce que tuer n' - l'envoi de signaux).

Normalement, sans interruption de sommeil ne devrait pas durer longtemps, mais que sous windows, cassé les pilotes ou cassé userpace programmes (vfork sans exec) peuvent se retrouver à dormir dans la D jamais.

267voto

JosephStyons Points 21187
<pre><code></code><p>Le « / f » est pour « force ». Si vous connaissez le PID, ensuite vous pouvez spécifier que, comme dans :</p><pre><code></code></pre><p>Beaucoup d’autres options est possibles, il suffit de taper taskkill / ? pour chacun d’eux. Le « / t » option tue un processus et tout processus enfant ; C’est peut-être utile pour vous.</p></pre>

41voto

Mehrdad Points 70493

Hacker processus a de nombreuses façons de tuer un processus.

(Clic droit sur le processus, puis allez dans divers-> Terminator.)

22voto

Iain Holder Points 7930

Obtenir des processus explorer de sysinternals (maintenant Microsoft)

http://technet.Microsoft.com/en-US/Sysinternals/bb896653.aspx

16voto

Rob Walker Points 25840

Un truc qui fonctionne bien est d'attacher un débogueur et puis quittez le débogueur.

Sur XP ou Windows 2003, vous pouvez le faire à l'aide de ntsd que les navires de la boîte:

ntsd -pn myapp.exe

ntsd va ouvrir une nouvelle fenêtre. Suffit de taper " q " dans la fenêtre pour quitter le débogueur et de prendre le processus.

J'ai connu cela fonctionne même lorsque le gestionnaire des tâches ne semble pas capable de tuer un processus.

Malheureusement ntsd a été supprimé à partir de Vista et que vous devez installer le (gratuit) debbugging outils pour windows pour obtenir un adapté débogueur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X