Wie kann ich + (was normalerweise den Prozess abbricht) in einer CLI-Java-Anwendung (Befehlszeilenschnittstelle) abfangen ?CtrlC
Gibt es eine plattformübergreifende Lösung (Linux, Solaris, Windows)?
Ich verwende Console
's readLine()
, aber wenn nötig, könnte ich eine andere Methode verwenden, um Zeichen aus der Standardeingabe zu lesen.
java
command-line
stdin
command-line-interface
copy-paste
ivan_ivanovich_ivanoff
quelle
quelle
Ich gehe davon aus, dass Sie ordnungsgemäß herunterfahren und den Abschaltvorgang nicht kurzschließen möchten. Wenn meine Annahme richtig ist, sollten Sie sich Shutdown Hooks ansehen .
quelle
Um Ctrl+ verarbeiten zu können, Cohne aus irgendeinem Grund herunterzufahren, müssen Sie eine Form der Signalbehandlung verwenden (da der Ctrl+ CEingang nicht direkt an Ihre Anwendung übergeben wird, sondern vom generierenden Betriebssystem verarbeitet wird Ein SIGINT, das dann an Java übergeben wird.
Weitere Informationen zur Signalverarbeitung finden Sie unter http://www.oracle.com/technetwork/java/javase/signals-139944.html .
(Wenn Sie nur ordnungsgemäß herunterfahren möchten, reicht die Antwort von akf aus.)
quelle
Einige Links zum Umgang mit SIGTERM - das ist das Signal, das das Programm auf der Betriebssystemseite erhält:
http://blog.webinf.info/2008/08/intercepting-sigterm.html
http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/signals.html
http://www.ibm.com/developerworks/java/library/i-signalhandling/
Das sollte unter POSIX-Betriebssystemen funktionieren - das heißt, Mac und Unix sollten funktionieren. Unter Windows bin ich mir nicht sicher.
quelle