7:pty

From Linux Man Pages

Jump to: navigation, search
      pty - pseudo-terminal interfaces
      

Contents

DESCRIPTION

      A pseudo-terminal is a pair of virtual character devices that provide a bidirectional communication channel.  One
      end of the channel is called the master; the other end is called the slave.  The slave end of the pseudo-terminal
      provides  an interface that behaves exactly like a classical terminal.  A process that expects to be connected to
      a terminal, can open the slave end of a pseudo-terminal and then be driven by a program that has opened the  mas-
      ter end.  Anything that is written on the master end is provided to the process on the slave end as though it was
      input typed on a terminal.  For example, writing the interrupt character (usually control-C) to the master device
      would  cause  an  interrupt signal (SIGINT) to be generated for the foreground process group that is connected to
      the slave.  Conversely, anything that is written to the slave end of the pseudo-terminal can be read by the  pro-
      cess  that  is connected to the master end.  Pseudo-terminals are used by applications such as network login ser-
      vices (ssh(1), rlogin(1), telnet(1)), terminal emulators, script(1), screen(1), and expect(1).
 
      Historically, two pseudo-terminal APIs have evolved: BSD and System V.  SUSv1 standardized a pseudo-terminal  API
      based on the System V API, and this API should be employed in all new programs that use pseudo-terminals.
 
      Linux  provides  both BSD-style and (standardised) System V-style pseudo-terminals.  System V-style terminals are
      commonly called Unix 98 pseudo-terminals on Linux systems.  Since kernel 2.6.4,  BSD-style  pseudo-terminals  are
      considered deprecated (they can be disabled when configuring the kernel); Unix 98 pseudo-terminals should be used
      in new applications.

Unix 98 pseudo-terminals

      An unused Unix 98 pseudo-terminal master is opened by calling posix_openpt(3).  (This function opens  the  master
      clone device, /dev/ptmx; see pts(4).)  After performing any program-specific initialisations, changing the owner-
      ship and permissions of the slave device using grantpt(3), and unlocking the slave using unlockpt(3)), the corre-
      sponding slave device can be opened by passing the name returned by ptsname(3) in a call to open(2).
 
      The  Linux  kernel  imposes  a  limit  on the number of available Unix 98 pseudo-terminals.  In kernels up to and
      including 2.6.3, this limit is configured at kernel compilation time (CONFIG_UNIX98_PTYS), and the permitted num-
      ber  of  pseudo-terminals  can  be  up  to 2048, with a default setting of 256.  Since kernel 2.6.4, the limit is
      dynamically adjustable via /proc/sys/kernel/pty/max, and a corresponding file, /proc/sys/kernel/pty/nr, indicates
      how many pseudo-terminals are currently in use.  For further details on these two files, see proc(5).

BSD pseudo-terminals

      BSD-style  pseudo-terminals  are  provided  as  pre-created pairs, with names of the form /dev/ptyXY (master) and
      /dev/ttyXY (slave), where X is a letter from the 16-character set [p-za-e], and Y is a letter from the 16-charac-
      ter  set  [0-9a-f].   (The  precise  range of letters in these two sets varies across Unix implementations.)  For
      example, /dev/ptyp1 and /dev/ttyp1 constitute a BSD pseudo-terminal pair.  A process finds an unused  pseudo-ter-
      minal  pair  by  trying to open(2) each pseudo-terminal master until an open succeeds.  The corresponding pseudo-
      terminal slave (substitute "tty" for "pty" in the name of the master) can then be opened.

NOTES

      A description of the TIOCPKT ioctl(), which controls packet mode operation, can be found in tty_ioctl(4).
 
      The  BSD  ioctl()s TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE have not been implemented under Linux.

FILES

      /dev/ptmx (Unix 98 master clone device)
      /dev/pts/* (Unix 98 slave devices)
      /dev/pty[p-za-e][0-9a-f] (BSD master devices)
      /dev/tty[p-za-e][0-9a-f] (BSD slave devices)

RELATED

      select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4), tty_ioctl(4)

CATEGORY

Personal tools