diff options
| author | Michael Kerrisk <mtk.manpages@gmail.com> | 2005-10-10 13:00:25 +0000 |
|---|---|---|
| committer | Michael Kerrisk <mtk.manpages@gmail.com> | 2005-10-10 13:00:25 +0000 |
| commit | 1ae9f937471416a3a171f18829fae55c81627ddd (patch) | |
| tree | 9ab1df4e4f74df4b5bb60d928c651849bfd6ac4b | |
| parent | f8b8dd887d8aefaca0b89d957c95019dcfc7ee07 (diff) | |
| download | man-pages-1ae9f937471416a3a171f18829fae55c81627ddd.tar.gz | |
Pseudo-terminals -- new page
| -rw-r--r-- | man7/pty.7 | 145 |
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) |
