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 behavior
  • SIG_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);
 
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    Default signal handler that uses the JVM's default behavior for the signal.
    Signal handler that ignores the signal and performs no special processing.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Handles the specified signal.
  • Field Details

    • 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 Details

    • 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