Provided by: manpages_3.54-1ubuntu1_all bug

NAME

       pty - pseudoterminal interfaces

DESCRIPTION

       A  pseudoterminal  (sometimes  abbreviated  "pty")  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 pseudoterminal 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
       pseudoterminal  and then be driven by a program that has opened the master 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 pseudoterminal can be read by the
       process that is connected to the master end.  Pseudoterminals are used by applications  such  as  network
       login services (ssh(1), rlogin(1), telnet(1)), terminal emulators, script(1), screen(1), and expect(1).

       Historically,   two   pseudoterminal  APIs  have  evolved:  BSD  and  System  V.   SUSv1  standardized  a
       pseudoterminal API based on the System V API, and this API should be employed in all  new  programs  that
       use pseudoterminals.

       Linux  provides  both  BSD-style  and  (standardized)  System  V-style  pseudoterminals.   System V-style
       terminals are commonly called UNIX 98 pseudoterminals on Linux systems.  Since  kernel  2.6.4,  BSD-style
       pseudoterminals  are  considered  deprecated  (they can be disabled when configuring the kernel); UNIX 98
       pseudoterminals should be used in new applications.

   UNIX 98 pseudoterminals
       An unused UNIX 98 pseudoterminal 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 initializations,
       changing the ownership and permissions of the slave device using  grantpt(3),  and  unlocking  the  slave
       using  unlockpt(3)),  the  corresponding  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 pseudoterminals.  In  kernels  up  to
       and  including  2.6.3,  this limit is configured at kernel compilation time (CONFIG_UNIX98_PTYS), and the
       permitted number of pseudoterminals 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 pseudoterminals are currently in use.  For further details on
       these two files, see proc(5).

   BSD pseudoterminals
       BSD-style  pseudoterminals  are  provided as precreated 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-character  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  pseudoterminal  pair.   A
       process finds an unused pseudoterminal pair by trying to open(2) each pseudoterminal master until an open
       succeeds.  The corresponding pseudoterminal slave (substitute "tty" for "pty" in the name of the  master)
       can then be opened.

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)

NOTES

       A  description  of  the  TIOCPKT  ioctl(2),  which  controls  packet  mode  operation,  can  be  found in
       tty_ioctl(4).

       The BSD ioctl(2) operations TIOCSTOP, TIOCSTART, TIOCUCNTL, and  TIOCREMOTE  have  not  been  implemented
       under Linux.

SEE ALSO

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

COLOPHON

       This  page  is  part  of  release 3.54 of the Linux man-pages project.  A description of the project, and
       information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.