The Controlling Tty There is no such thing as a "system keyboard" or "screen" A program interacts through files, and files only There exists no meaningless "kbhit" function By convention, there exists standard input, output, error They can be connected to a keyboard, but they are likely not Unfortunately, the user needs some control over interaction Keyboard-kill operations and automatic termination on modem hang-hup Changes in screen size need to be notified Thus, each process may have (or not) a controlling tty The tty is a serial port, with uart-class features Baud rate, parity, newline conversion, ... The tty is also a screen, with display-class features Char-grid size and little more Other screen-like things travel in the data stream as escape sequences Special input characters received from a tty make the kernel send signals The signal is sent only to processes controlled by that tty