aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man7/pty.7145
1 files changed, 145 insertions, 0 deletions
diff --git a/man7/pty.7 b/man7/pty.7
new file mode 100644
index 0000000000..001a630751
--- /dev/null
+++ b/man7/pty.7
@@ -0,0 +1,145 @@
+.\" Hey Emacs! This file is -*- nroff -*- source.
+.\"
+.\" Copyright (C) 2005 Michael Kerrisk <mtk-manpages@gmx.net>
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.TH PTY 7 2005-10-10 "Linux 2.6.14" "Linux Programmer's Manual"
+.SH NAME
+pty - pseudo-terminal interfaces
+.SH 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
+.IR master ;
+the other end is called the
+.IR 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 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
+.RB ( ssh "(1), " rlogin "(1), " telnet (1)),
+terminal emulators,
+.BR script (1),
+.BR screen (1),
+and
+.BR 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.
+.SS "Unix 98 pseudo-terminals"
+An unused Unix 98 pseudo-terminal master is opened by calling
+.BR posix_openpt (3).
+(This function opens the master clone device,
+.IR /dev/ptmx .)
+After performing any program-specific initialisations,
+changing the ownership and permissions of the slave device using
+.BR grantpt (3),
+and unlocking the slave using
+.BR unlockpt (3)),
+the corresponding slave device can be opened by passing
+the name returned by
+.BR ptsname (3)
+in a call to
+.BR 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
+.IR /proc/sys/kernel/pty/max ,
+and a corresponding file,
+.IR /proc/sys/kernel/pty/nr ,
+indicates how many pseudo-terminals are currently in use.
+For further details on these two files, see
+.BR proc (5).
+.SS "BSD pseudo-terminals"
+BSD-style pseudo-terminals are provided as pre-created pairs, with
+names of the form
+.I /dev/ptyXY
+(master) and
+.I /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,
+.I /dev/ptyp1
+and
+.I /dev/ttyp1
+constitute a BSD pseudo-terminal pair.
+A process finds an unused pseudo-terminal pair by trying to
+.BR 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.
+.SH "NOTES"
+A description of the
+.B TIOCPKT
+.BR ioctl (),
+which controls packet mode operation, can be found in
+.BR tty_ioctl (4).
+
+The BSD ioctl()s TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE have
+not been implemented under Linux.
+.SH "FILES"
+.I /dev/ptmx
+(Unix 98 master clone device)
+.br
+.I /dev/pts/*
+(Unix 98 slave devices)
+.br
+.I /dev/pty[p-za-e][0-9a-f]
+(BSD master devices)
+.br
+.I /dev/tty[p-za-e][0-9a-f]
+(BSD slave devices)
+.I
+.SH "SEE ALSO"
+.BR select (2),
+.BR setsid (2),
+.BR forkpty (3),
+.BR openpty (3),
+.BR termios (3),
+.BR tty (4),
+.BR tty_ioctl (4)