2009-03-24 8 views
20

Ich verwende Eclipse unter Windows, mit dem PyDev-Plugin für Python-Entwicklung. Wenn ich 'Run' verwende, um meine Anwendung zu starten, wird eine neue Python (CPython) -Instanz erzeugt. Wenn ich die Schaltfläche "Beenden" (rotes Quadrat) verwende, wird der Prozess abgebrochen. Es scheint jedoch, ein SIGKILL zu tun, so dass mein Shutdown-Handler nicht aufräumen kann.Kann Eclipse sanft beendet werden, anstatt SIGKILL zu verwenden?

Gibt es eine Möglichkeit, Eclipse ein SIGTERM zu senden oder einen Tastaturinterrupt (CTRL-C) von der Eclipse-Konsole zu simulieren?

Hinweis: Mir ist bewusst, dass es andere Python-IDEs wie Komodo oder Wing gibt, die dieses Problem lösen könnten, aber ich versuche nicht, dies umzustellen.

+1

jede Lösung/Arbeit von diesem ?? – gsagrawal

+0

Eclipse verwendet SIGKILL nicht. – djechlin

Antwort

10

Eclipse verwendet die Java Process API, die das Signal sendet. Dies ist eine native API und es gibt keine Möglichkeit, dies zu ändern. Ich nehme an, dass Sie versucht haben, einen Handler für SIGKILL zu installieren, und das hat nicht funktioniert.

Daher wäre die einzige Lösung, eine kleine Batch-Datei zu schreiben, die die Prozesse auflistet und SIGTERM an einen von ihnen sendet. Rufen Sie das über eine Eingabeaufforderung auf. Wenn Sie mit Alt-Tab zu diesem wechseln, ist es fast so komfortabel wie in Eclipse.

Oder schreiben Sie ein Plugin, um Batch-Dateien aufzurufen.

+3

Die Installation eines Handlers für SIGKILL ist sinnlos, da es definitionsgemäß niemals ausgeführt wird. SIGTERM fordert ein Programm zum Beenden auf. SIGKILL veranlasst das Betriebssystem, ein Programm zwangsweise zu beenden, ohne es vorher zu informieren. – Powerlord

+0

Bemrose: Ich vermutete so viel, aber war zu faul, das zu sehen :) –