Interface Terminal.SignalHandler
-
- All Known Implementing Classes:
NativeSignalHandler
- Enclosing interface:
- Terminal
public static interface Terminal.SignalHandler
Interface for handling terminal signals.The SignalHandler interface defines the contract for objects that can respond to terminal signals. When a signal is raised, the corresponding handler's
handle(Signal)
method is called with the signal that was raised.JLine provides two predefined signal handlers:
SIG_DFL
- Default signal handler that uses the JVM's default behaviorSIG_IGN
- Ignores the signal and performs no special processing
Example usage with a custom handler:
Terminal terminal = TerminalBuilder.terminal(); // Create a custom signal handler SignalHandler handler = signal -> { if (signal == Signal.INT) { terminal.writer().println("\nInterrupted!"); terminal.flush(); } }; // Register the handler for the INT signal terminal.handle(Signal.INT, handler);
-
-
Field Summary
Fields Modifier and Type Field Description static Terminal.SignalHandler
SIG_DFL
Default signal handler that uses the JVM's default behavior for the signal.static Terminal.SignalHandler
SIG_IGN
Signal handler that ignores the signal and performs no special processing.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
handle(Terminal.Signal signal)
Handles the specified signal.
-
-
-
Field Detail
-
SIG_DFL
static final Terminal.SignalHandler SIG_DFL
Default signal handler that uses the JVM's default behavior for the signal.When this handler is registered for a signal, the terminal will use the JVM's default behavior to handle the signal. For example, the default behavior for the INT signal (Ctrl+C) is to terminate the JVM.
Example usage:
// Restore default behavior for INT signal terminal.handle(Signal.INT, SignalHandler.SIG_DFL);
-
SIG_IGN
static final Terminal.SignalHandler SIG_IGN
Signal handler that ignores the signal and performs no special processing.When this handler is registered for a signal, the terminal will completely ignore the signal and continue normal operation. This is useful for preventing signals like INT (Ctrl+C) from terminating the application.
Example usage:
// Ignore INT signal (Ctrl+C will not terminate the application) terminal.handle(Signal.INT, SignalHandler.SIG_IGN);
-
-
Method Detail
-
handle
void handle(Terminal.Signal signal)
Handles the specified signal.This method is called when a signal is raised and this handler is registered for that signal. Implementations should perform any necessary actions in response to the signal.
Note that signal handlers should generally be short-lived and avoid blocking operations, as they may be called in contexts where blocking could cause deadlocks or other issues.
- Parameters:
signal
- the signal that was raised
-
-