Frage

Ich habe eine Kommandozeilen-Version von Eclipse RCP GUI-Anwendung, die kann die Verwendung eine Menge von dem gleichen Plugins macht (das ist praktisch für Integrationstests). Eine Sache, es tut, ist eine Verbindung zu einem Server, fordert Sachen und startet eine interaktive Schleife. So beenden Sie können den Benutzer über die GUI-Anwendung die Schleife stoppen und die Anwendung zu schließen.

In meiner Befehlszeile app, der naheliegendste Weg zu „schließen“ die Anwendung ist CTRL-C! Doch diese Blätter „Session crud“ auf dem Server, werden gereinigt, wenn ich das Ausfahrtssignal erfassen kann. Die crud wird schließlich eine Zeitüberschreitung oder was auch immer, aber es wäre schön, wenn ich es auch sauber sortieren könnte aus.

Also, was sind meine Optionen für ein Kill-Signal aus einer Eclipse-RCP-Anwendung erfassen? Dies ist Linux-spezifisch, ob das hilft. Aber ich lade keine SWT Plugins. My „Hauptschleife“ Plugin.stop () aufgerufen wird, wenn nicht die I ctrl-c die Befehlszeile. So etwas wie Python KeyboardInterrupt wäre Ass!

War es hilfreich?

Lösung

Ich fand einen alternativen Ansatz - einen Shutdown-Hook hinzufügen, die ausgeführt wird, wenn das Ende kommt ...

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            System.out.println("The end.");
        }
    });

Andere Tipps

Schauen Sie sich trap builtin der bash. Das Signal für die CTRL-C ist SIGINT, aber Sie können auch Trap SIGTERM und SIGHUP wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top