Sync usage with man page.
[netbsd-mini2440.git] / share / man / man4 / pty.4
blob2a929b3d707f3a46eb03cfe7b5a0c6ccb873f548
1 .\"     $NetBSD: pty.4,v 1.11 2006/10/06 22:07:44 elad Exp $
2 .\"
3 .\" Copyright (c) 1983, 1991, 1993
4 .\"     The Regents of the University of California.  All rights reserved.
5 .\"
6 .\" Redistribution and use in source and binary forms, with or without
7 .\" modification, are permitted provided that the following conditions
8 .\" are met:
9 .\" 1. Redistributions of source code must retain the above copyright
10 .\"    notice, this list of conditions and the following disclaimer.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\"    notice, this list of conditions and the following disclaimer in the
13 .\"    documentation and/or other materials provided with the distribution.
14 .\" 3. Neither the name of the University nor the names of its contributors
15 .\"    may be used to endorse or promote products derived from this software
16 .\"    without specific prior written permission.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     @(#)pty.4       8.2 (Berkeley) 11/30/93
31 .\"
32 .Dd October 7, 2006
33 .Dt PTY 4
34 .Os
35 .Sh NAME
36 .Nm pty
37 .Nd pseudo terminal driver
38 .Sh SYNOPSIS
39 .Cd pseudo-device pty Op Ar count
40 .Sh DESCRIPTION
41 The
42 .Nm
43 driver provides support for a device-pair termed a
44 .Em pseudo terminal .
45 A pseudo terminal is a pair of character devices, a
46 .Em master
47 device and a
48 .Em slave
49 device.
50 The slave device provides to a process an interface identical to
51 that described in
52 .Xr tty 4 .
53 However, whereas all other devices which provide the interface described in
54 .Xr tty 4
55 have a hardware device of some sort behind them, the slave device
56 has, instead, another process manipulating it through the master
57 half of the pseudo terminal.
58 That is, anything written on the master device is given to the
59 slave device as input and anything written on the slave device is
60 presented as input on the master device.
61 .Pp
62 In configuring, if an optional
63 .Ar count
64 is given in
65 the specification, that number of pseudo terminal pairs is initially configured;
66 the default count is 16. Additional pseudo terminal pairs are allocated on
67 as-needed basis, maximum number of them is controlled via
68 .Em kern.maxptys
69 sysctl (defaults to 992).
70 .Pp
71 The following
72 .Xr ioctl 2
73 calls apply only to pseudo terminals:
74 .Bl -tag -width TIOCREMOTE
75 .It Dv TIOCSTOP
76 Stops output to a terminal (e.g. like typing
77 .Ql ^S ) .
78 Takes
79 no parameter.
80 .It Dv TIOCSTART
81 Restarts output (stopped by
82 .Dv TIOCSTOP
83 or by typing
84 .Ql ^S ) .
85 Takes no parameter.
86 .It Dv TIOCPKT
87 Enable/disable
88 .Em packet
89 mode.
90 Packet mode is enabled by specifying (by reference) a nonzero
91 parameter and disabled by specifying (by reference) a zero parameter.
92 When applied to the master side of a pseudo
93 terminal, each subsequent
94 .Xr read 2
95 from the terminal will return data written on the slave part of
96 the pseudo terminal preceded by a zero byte (symbolically
97 defined as
98 .Dv TIOCPKT_DATA ) ,
99 or a single byte reflecting control status information.
100 In the latter case, the byte is an inclusive-or
101 of zero or more of the bits:
102 .Bl -tag -width TIOCPKT_FLUSHWRITE
103 .It Dv TIOCPKT_FLUSHREAD
104 whenever the read queue for the terminal is flushed.
105 .It Dv TIOCPKT_FLUSHWRITE
106 whenever the write queue for the terminal is flushed.
107 .It Dv TIOCPKT_STOP
108 whenever output to the terminal is stopped a la
109 .Ql ^S .
110 .It Dv TIOCPKT_START
111 whenever output to the terminal is restarted.
112 .It Dv TIOCPKT_DOSTOP
113 whenever
114 .Em t_stopc
116 .Ql ^S
118 .Em t_startc
120 .Ql ^Q .
121 .It Dv TIOCPKT_NOSTOP
122 whenever the start and stop characters are not
123 .Ql ^S/^Q .
125 While this mode is in use, the presence of control status information
126 to be read from the master side may be detected by a
127 .Xr select 2
128 for exceptional conditions.
130 This mode is used by
131 .Xr rlogin 1
133 .Xr rlogind 8
134 to implement a remote-echoed, locally
135 .Ql ^S/^Q
136 flow-controlled
137 remote login with proper back-flushing of output; it can be
138 used by other similar programs.
139 .It Dv TIOCPKT_IOCTL
140 When this bit is set, the slave has changed the
141 .Xr termios 4
142 structure (TTY state), and the remainder of the data read from
143 the master side of the
145 is a copy of the new
146 .Xr termios 4
147 structure.
149 This is used by
150 .Xr telnetd 8
151 to implement TELNET "line mode" - it allows the
152 .Xr telnetd 8
153 to detect
154 .Xr tty 4
155 state changes by the slave, and negotiate the appropriate TELNET
156 protocol equivalents with the remote peer.
158 .It Dv TIOCUCNTL
159 Enable/disable a mode that allows a small number of simple user
160 .Xr ioctl 2
161 commands to be passed through the pseudo-terminal,
162 using a protocol similar to that of
163 .Dv TIOCPKT .
165 .Dv TIOCUCNTL
167 .Dv TIOCPKT
168 modes are mutually exclusive.
169 This mode is enabled from the master side of a pseudo terminal
170 by specifying (by reference)
171 a nonzero parameter and disabled by specifying (by reference)
172 a zero parameter.
173 Each subsequent
174 .Xr read 2
175 from the master side will return data written on the slave part of
176 the pseudo terminal preceded by a zero byte,
177 or a single byte reflecting a user control operation on the slave side.
178 A user control command consists of a special
179 .Xr ioctl 2
180 operation with no data; the command is given as
181 .Dv UIOCCMD Ns (n) ,
182 where
183 .Ar n
184 is a number in the range 1-255.
185 The operation value
186 .Ar n
187 will be received as a single byte on the next
188 .Xr read 2
189 from the master side.
191 .Xr ioctl 2
192 .Dv UIOCCMD Ns (0)
193 is a no-op that may be used to probe for
194 the existence of this facility.
195 As with
196 .Dv TIOCPKT
197 mode, command operations may be detected with a
198 .Xr select 2
199 for exceptional conditions.
200 .It Dv TIOCREMOTE
201 A mode for the master half of a pseudo terminal, independent
203 .Dv TIOCPKT .
204 This mode causes input to the pseudo terminal to be flow controlled
205 and not input edited (regardless of the terminal mode).
206 Each write to the control terminal produces a record boundary for
207 the process reading the terminal.
208 In normal usage, a write of data is like the data typed as a line
209 on the terminal; a write of 0 bytes is like typing an end-of-file
210 character.
211 .Dv TIOCREMOTE
212 can be used when doing remote line
213 editing in a window manager, or whenever flow controlled input
214 is required.
216 .Sh FILES
217 .Bl -tag -width /dev/tty[p-zP-T][0-9a-zA-Z]x -compact
218 .It Pa /dev/pty[p-zP-T][0-9a-zA-Z]
219 master pseudo terminals
220 .It Pa /dev/tty[p-zP-T][0-9a-zA-Z]
221 slave pseudo terminals
223 .Sh DIAGNOSTICS
224 None.
225 .Sh SEE ALSO
226 .Xr ioctl 2 ,
227 .Xr read 2 ,
228 .Xr select 2 ,
229 .Xr write 2 ,
230 .Xr openpty 3 ,
231 .Xr tty 4
232 .Sh HISTORY
235 driver appeared in
236 .Bx 4.2 .