Frage

Wie kann ich abfangen Strg + C (was normalerweise würde den Prozess töten) in einem CLI (Command Line Interface) Java-Anwendung?

Gibt es eine Multi-Plattform-Lösung existiert (Linux, Solaris, Windows)?

Ich verwende Console des readLine(), aber wenn nötig, könnte ich eine andere Methode verwenden Zeichen von der Standardeingabe zu lesen.

War es hilfreich?

Lösung

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { /*
       my shutdown code here
    */ }
 });

Das sollte das Signal abfangen, sondern nur als Zwischenschritt vor der JVM vollständig Abschaltungen selbst in der Lage sein, so kann es nicht sein, was Sie suchen nach.

Sie benötigen ein verwenden SignalHandler (sun.misc.SignalHandler) das SIGINT Signal durch ein ausgelöst abzufangen Strg + C (unter Unix sowie unter Windows).
Siehe diesem Artikel (pdf, Seite 8 und 9).

Andere Tipps

Ich gehe davon aus Sie zum Herunterfahren wollen anmutig und Kurzschluss den Shutdown-Prozess nicht. Wenn meine Annahme richtig ist, dann sollte man sich Shutdown Hooks .

Um in der Lage zu handhaben Strg + C ohne aus irgendeinem Grund herunterzufahren, werden Sie irgendeine Form von Signal verwenden müssen Handhabung (da die Strg + C Eingang ist eigentlich nicht direkt an Ihre Anwendung übergeben, sondern durch das Betriebssystem behandelt wird, die eine SIGINT erzeugt, die dann an Java übergeben wird.

Siehe http://www.oracle.com/technetwork/ java / JavaSE / signals-139944.html Details zu Signalverarbeitung.

(Wenn Sie wollen einfach nur anmutig shutdown, akf Antwort genügt.)

Einige Links wie SIGTERM zu handhaben - das ist das Signal des Programm auf der OS-Seite bekommen:

http://blog.webinf.info/2008/08/intercepting -sigterm.html

http: //java.sun .com / JavaSE / 6 / webnotes / Probleme / TSG-VM / html / signals.html

http://www.ibm.com/developerworks/java/ Bibliothek / i-signalhandling /

Das sollte auf POSIX-Betriebssystemen arbeiten - das heißt, Mac und Unix sollten auf Windows arbeiten, ich bin mir nicht sicher, ich erinnere mich, es auch zu einem gewissen Grad kompatibel POSIX ist, könnte aber Varty viel mit verschiedenen Versionen <. / p>

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