In einer Anwendung mit Befehlszeilenschnittstelle (CLI) kann sich das Erfassen von Strg C als unschätzbar wertvoll erweisen. Diese Tastenkombination, die normalerweise den Vorgang beendet, kann umgeleitet werden, um benutzerdefinierte Aktionen auszuführen. Diese Funktionalität plattformübergreifend konsistent zu erreichen, stellt eine Herausforderung dar.
Für Unix und Solaris können Sie die SignalHandler-Klasse aus dem sun.misc-Paket verwenden. Diese Klasse ermöglicht das Abfangen des von Strg C generierten SIGINT-Signals.
import sun.misc.Signal; import sun.misc.SignalHandler; class CtrlCHandler implements SignalHandler { public void handle(Signal signal) { // Your custom Ctrl+C handling logic } } Signal.handle(new Signal("INT"), new CtrlCHandler());
Für Windows kann ein ähnlicher Ansatz mithilfe der Runtime-Klasse und eines Shutdown-Hooks verwendet werden.
Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { // Your custom Ctrl+C handling logic } });
Diese Technik ermöglicht jedoch nur ein zwischenzeitliches Abfangen, bevor die JVM heruntergefahren wird.
Anstatt die oben genannten Methoden zu verwenden, sollten Sie eine andere Methode zum Lesen von Zeichen in Betracht ziehen von der Standardeingabe, wie z. B. System.in.read(). Dieser Ansatz bietet direkte Kontrolle über die Eingabeverarbeitung, einschließlich der Möglichkeit, Strg C abzufangen.
Das obige ist der detaillierte Inhalt vonWie kann man Strg C in Java-CLI-Anwendungen plattformübergreifend abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!