Heim  >  Artikel  >  Java  >  Wie kann man Strg C in Java-CLI-Anwendungen plattformübergreifend abfangen?

Wie kann man Strg C in Java-CLI-Anwendungen plattformübergreifend abfangen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-26 02:00:28498Durchsuche

How to Intercept Ctrl C in Java CLI Applications Across Platforms?

Abfangen von Strg C in CLI-Java-Anwendungen

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.

Multi-Plattform-Lösung

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.

Alternativer Ansatz

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn