Problem: Wie behandelt man Strg-C-Ereignisse in einer CLI-Java-Anwendung, um eine Prozessbeendigung zu verhindern?
Kontext: Das Standardverhalten für Strg C in CLI-Anwendungen besteht darin, den Prozess zu beenden, aber für bestimmte Anwendungen kann es notwendig sein, dieses Signal abzufangen und stattdessen bestimmte Aktionen auszuführen.
Lösung:
Um Strg C in einer plattformübergreifenden CLI-Java-Anwendung abzufangen, können Sie eine der folgenden Methoden anwenden:
Laufzeit Shutdown Hook:
Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // Your shutdown code that handles Ctrl+C } });
Diese Methode führt Ihren Code aus, wenn die JVM aufgrund von Strg C heruntergefahren wird. Sie bietet jedoch möglicherweise keine vollständige Kontrolle über die Signalverarbeitung.
SignalHandler:
public class SignalHandler { public static void registerCtrlCHandler() { try { Signal.handle(new Signal("INT"), (s) -> { // Your Ctrl+C handling logic here }); } catch (Exception e) { // Handle exception } } }
Mit dem SignalHandler aus dem sun.misc-Paket können Sie das SIGINT-Signal abfangen, das durch Strg C ausgelöst wird, und benutzerdefinierte Aktionen in Ihrer Anwendung ausführen . Dies ermöglicht eine detailliertere Kontrolle über die Signalverarbeitung.
Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Strg C Ihre Java-CLI-Anwendung beendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!