Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (Debian-5.0)
Apropos / Subsearch:
optional field

PTY(7)                     Linux Programmer's Manual                    PTY(7)

       pty - pseudo-terminal interfaces

       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 clas-
       sical  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 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 pseudo-terminal can be read by the
       process that is connected to the master end.  Pseudo-terminals are used
       by applications such as network login services (ssh(1), rlogin(1), tel-
       net(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-termi-

       Linux provides both BSD-style and (standardized) 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

   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 initial-
       izations,  changing  the  ownership and permissions of the slave device
       using grantpt(3), and unlocking the slave using unlockpt(3)), the  cor-
       responding  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  number 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  cur-
       rently 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-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 pseudo-terminal pair.  A process  finds
       an  unused pseudo-terminal pair by trying to open(2) each pseudo-termi-
       nal master until an open succeeds.  The  corresponding  pseudo-terminal
       slave  (substitute  "tty" for "pty" in the name of the master) can then
       be opened.

       /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)

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

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

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

       This  page  is  part of release 3.05 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/.

Linux                             2005-10-10                            PTY(7)