Kurz Übliche andere Methoden als Windows taskkill
sind energisch. Danke an mob und melpomene.
Die Win32::Process
Dokumentation nicht sagen, was die Methoden Kill
oder KillProcess
tun, aber sie scheinen ziemlich stumpf darüber. Windows bietet eine Gradation, um einen Prozess zu beenden, siehe zum Beispiel diesen Beitrag auf graceful termination via winapi, auch wenn er keine UNIX-Signale hat. Dies wird jedoch offenbar weder vom Modul noch von kill
(siehe Ende) genutzt.
Die Windows-eigene taskkill
sollte schön bitten, den Prozess zu beenden. Fragen Sie nach Flags, indem Sie taskkill /?
in einer Konsole auf Ihrem System ausführen. Hier ist Dokumentation für taskkill on MS technet
. Zum Beispiel endet dies den Prozess durch seine $pid
, zusammen mit seinen Kindern
my $pid = $ProcessObj->GetProcessID();
system("taskkill /t /pid $pid");
Wenn die Methode GetProcessID()
nicht die reale ID zurückgibt, finden Sie in der unten stehenden Link für andere Möglichkeiten.
Ich kann jetzt nicht unter Windows testen. Es gibt ein bisschen mehr Details in this post
, zweiter Teil.
Perls kill
ist offenbar unter Windows kraftvoll. Von perlport
... kill($sig, $pid)
beendet den Prozess durch $pid
identifiziert, und macht es sofort mit Exit-Status $sig
verlassen.
Dank melpomene für Kommentar und Dokumentation verknüpfen.
Die exitcode
, glaube ich, erzählt nur zu verarbeiten, was dem System als sein Ausgang berichtet.
Wenn es windowed app ist (im Gegensatz zu einer Konsolenanwendung gegen), können Sie ein beenden senden Nachricht an seine Nachrichtenwarteschlange – ikegami