Devpts

From Wikipedia, the free encyclopedia

Simplified structure of the Linux kernel: Terminals and character device drivers, a.k.a. the "TTY subsystem".

devpts is a virtual filesystem directory available in the Linux kernel since version 2.1.93 (April 1998). It is normally mounted at /dev/pts and contains solely devices files which represent slaves to the multiplexing master located at /dev/ptmx which in turn is used to implement terminal emulators (such as X11 xterm).[1][2]

A pseudoterminal ("pseudo TTY" or "PTY") is a pair of pseudo-devices – a slave and a master – that provide a special sort of communication channel. The slave pseudo-device emulates a physical computer text terminal (like, e.g. the DEC VT100) it can read and write text as though it was such a physical terminal. The master pseudo-device provides the means by which a program providing a text-based user interface acts with and controls its slave.

Common use programs with a text-based user interface are terminal emulators (e.g. xterm, gnome-terminal or Konsole), or programs using SSH or telnet. Writing to the master is exactly like typing on a terminal, thus the master pseudo-device acts kind of like the person sitting in front of the physical computer text terminal.

A pseudoterminal pair is similar to a bidirectional pipe. Anything that is written on the master appears as input on the slave, and anything that is written on the slave appears as input on the master.[3] In terms of POSIX defined terminal devices (files) may operate in full-duplex mode.[4] Like pipes, pseudoterminals have a limited capacity. On Linux, the pseudoterminal capacity is about 4 KiB in each direction.

A typical Linux kernel-based operating system provides many PTYs to support text-based interfaces as provided by terminal emulators (such as xterm or gnome-terminal) and remote access interfaces like SSH.

The creation of devpts resulted from the wish to abandon the need for a setuid helper program, e.g. /usr/libexec/pt_chown. It is a distinct implementation of the pseudoterminal idea; the previous implementation provided a fixed number of master/slave pairs which had permanent device nodes, for example the master-slave pair /dev/ptyp63 and /dev/ttyp63, cf. The Linux Programming Interface chapter 62 "Terminals" and chapter 64 "Pseudoterminals".

Implementation history

See also

References

Related Articles

Wikiwand AI