Copied!

TerminalInputHelper stops Ctrl-C and similar signals from leaving the terminal in an unusable state if its settings have been modified when reading user input.

This can be an issue on non-Windows platforms.

Usage:

$inputHelper = new TerminalInputHelper($inputStream); ...change terminal settings // Wait for input before all input reads $inputHelper->waitForInput(); ...read input // Call finish to restore terminal settings and signal handlers $inputHelper->finish() 
  • internal
CloneableFinalInstantiable
Methods
public __construct( $inputStream)
 
  • param resource $inputStream
  • throws \RuntimeException If unable to read terminal settings
public finish() : void
 

Restores terminal state and signal handlers.

public waitForInput() : void
 

Waits for input and terminates if sent a default signal.

Properties
private string $initialState
private $inputStream = NULL
 
  • var resource
private bool $isStdin
private array $signalHandlers = []
private int $signalToKill = 0
private array $targetSignals = []
Methods
private checkForKillSignal() : void
private createSignalHandlers() : void
© 2025 Bruce Wells