Mac Developer Library Developer


This manual page is for Mac OS X version 10.9

If you are running a different version of Mac OS X, view the documentation locally:

  • In Terminal, using the man(1) command

Reading manual pages

Manual pages are intended as a quick reference for people who already understand a technology.

  • To learn how the manual is organized or to learn about command syntax, read the manual page for manpages(5).

  • For more information about this technology, look for other documentation in the Apple Developer Library.

  • For general information about writing shell scripts, read Shell Scripting Primer.

PTY(4)                   BSD Kernel Interfaces Manual                   PTY(4)

     pty -- pseudo terminal driver

     pseudo-device pty [count]

     The pty driver provides support for a device-pair termed a pseudo terminal.  A pseudo terminal is a
     pair of character devices, a master device and a slave device.  The slave device provides to a process
     an interface identical to that described in tty(4).  However, whereas all other devices which provide
     the interface described in tty(4) have a hardware device of some sort behind them, the slave device
     has, instead, another process manipulating it through the master half of the pseudo terminal.  That is,
     anything written on the master device is given to the slave device as input and anything written on the
     slave device is presented as input on the master device.

     In configuring, if an optional count is given in the specification, that number of pseudo terminal
     pairs are configured; the default count is 32.

     The following ioctl(2) calls apply only to pseudo terminals:

     TIOCSTOP    Stops output to a terminal (e.g. like typing `^S').  Takes no parameter.

     TIOCSTART   Restarts output (stopped by TIOCSTOP or by typing `^S').  Takes no parameter.

     TIOCPKT     Enable/disable packet mode.  Packet mode is enabled by specifying (by reference) a nonzero
                 parameter and disabled by specifying (by reference) a zero parameter.  When applied to the
                 master side of a pseudo terminal, each subsequent read(2) from the terminal will return
                 data written on the slave part of the pseudo terminal preceded by a zero byte (symbolically
                 defined as TIOCPKT_DATA), or a single byte reflecting control status information.  In the
                 latter case, the byte is an inclusive-or of zero or more of the bits:

                 TIOCPKT_FLUSHREAD   whenever the read queue for the terminal is flushed.

                 TIOCPKT_FLUSHWRITE  whenever the write queue for the terminal is flushed.

                 TIOCPKT_STOP        whenever output to the terminal is stopped a la `^S'.

                 TIOCPKT_START       whenever output to the terminal is restarted.

                 TIOCPKT_DOSTOP      whenever t_stopc is `^S' and t_startc is `^Q'.

                 TIOCPKT_NOSTOP      whenever the start and stop characters are not `^S/^Q'.

                                     While this mode is in use, the presence of control status information
                                     to be read from the master side may be detected by a select(2) for
                                     exceptional conditions.

                                     This mode is used by rlogin(1) and rlogind(8) to implement a remote-echoed, remoteechoed,
                                     echoed, locally `^S/^Q' flow-controlled remote login with proper back-flushing backflushing
                                     flushing of output; it can be used by other similar programs.

     TIOCUCNTL   Enable/disable a mode that allows a small number of simple user ioctl(2) commands to be
                 passed through the pseudo-terminal, using a protocol similar to that of TIOCPKT.  The
                 TIOCUCNTL and TIOCPKT modes are mutually exclusive.  This mode is enabled from the master
                 side of a pseudo terminal by specifying (by reference) a nonzero parameter and disabled by
                 specifying (by reference) a zero parameter.  Each subsequent read(2) from the master side
                 will return data written on the slave part of the pseudo terminal preceded by a zero byte,
                 or a single byte reflecting a user control operation on the slave side.  A user control
                 command consists of a special ioctl(2) operation with no data; the command is given as
                 UIOCCMD(n), where n is a number in the range 1-255.  The operation value n will be received
                 as a single byte on the next read(2) from the master side.  The ioctl(2) UIOCCMD(0) is a
                 no-op that may be used to probe for the existence of this facility.  As with TIOCPKT mode,
                 command operations may be detected with a select(2) for exceptional conditions.

     TIOCREMOTE  A mode for the master half of a pseudo terminal, independent of TIOCPKT.  This mode causes
                 input to the pseudo terminal to be flow controlled and not input edited (regardless of the
                 terminal mode).  Each write to the control terminal produces a record boundary for the
                 process reading the terminal.  In normal usage, a write of data is like the data typed as a
                 line on the terminal; a write of 0 bytes is like typing an end-of-file character.
                 TIOCREMOTE can be used when doing remote line editing in a window manager, or whenever flow
                 controlled input is required.

     /dev/pty[p-sP-S][a-z0-9]   master pseudo terminals
     /dev/tty[p-sP-S][a-z0-9]   slave pseudo terminals


     The pty driver appeared in 4.2BSD.

4.2 Berkeley Distribution      November 30, 1993     4.2 Berkeley Distribution

Reporting Problems

The way to report a problem with this manual page depends on the type of problem:

Content errors
Report errors in the content of this documentation with the feedback links below.
Bug reports
Report bugs in the functionality of the described tool or API through Bug Reporter.
Formatting problems
Report formatting mistakes in the online version of these pages with the feedback links below.