Name
ptmx and pts — pseudo-terminal master and slave
DESCRIPTION
The file /dev/ptmx is a
character file with major number 5 and minor number 2,
usually of mode 0666 and owner.group of root.root. It is used
to create a pseudo-terminal master and slave pair.
When a process opens /dev/ptmx, it gets a file descriptor for a
pseudo-terminal master (PTM), and a pseudo-terminal slave
(PTS) device is created in the /dev/pts directory. Each file descriptor
obtained by opening /dev/ptmx
is an independent PTM with its own associated PTS, whose path
can be found by passing the descriptor to ptsname(3).
Before opening the pseudo-terminal slave, you must pass
the master's file descriptor to grantpt(3) and unlockpt(3).
Once both the pseudo-terminal master and slave are open,
the slave provides processes with an interface that is
identical to that of a real terminal.
Data written to the slave is presented on the master
descriptor as input. Data written to the master is presented
to the slave as input.
In practice, pseudo-terminals are used for implementing
terminal emulators such as xterm(1), in which data read
from the pseudo-terminal master is interpreted by the
application in the same way a real terminal would interpret
the data, and for implementing remote-login programs such as
sshd(8), in which data read
from the pseudo-terminal master is sent across the network to
a client program that is connected to a terminal or terminal
emulator.
Pseudo-terminals can also be used to send input to
programs that normally refuse to read input from pipes (such
as su(8), and passwd(8)).
FILES
/dev/ptmx, /dev/pts/*
NOTES
The Linux support for the above (known as Unix98 pty
naming) is done using the devpts filesystem, that
should be mounted on /dev/pts.
Before this Unix98 scheme, master ptys were called
/dev/ptyp0, ... and slave ptys
/dev/ttyp0, ... and one needed
lots of preallocated device nodes.