243 lines
6.9 KiB
Groff
243 lines
6.9 KiB
Groff
.\" Copyright (c) 1983, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)pty.4 8.2 (Berkeley) 11/30/93
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd November 30, 1993
|
|
.Dt PTY 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm pty
|
|
.Nd pseudo terminal driver
|
|
.Sh SYNOPSIS
|
|
.Cd "device pty"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver provides support for a device-pair termed a
|
|
.Em pseudo terminal .
|
|
A pseudo terminal is a pair of character devices, a
|
|
.Em master
|
|
device and a
|
|
.Em slave
|
|
device.
|
|
The slave device provides to a process an interface identical
|
|
to that described in
|
|
.Xr tty 4 .
|
|
However, whereas all other devices which provide the
|
|
interface described in
|
|
.Xr 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.
|
|
.Pp
|
|
The following
|
|
.Xr ioctl 2
|
|
calls apply only to pseudo terminals:
|
|
.Bl -tag -width TIOCREMOTE
|
|
.It Dv TIOCSTOP
|
|
Stops output to a terminal (e.g.\& like typing
|
|
.Ql ^S ) .
|
|
Takes
|
|
no parameter.
|
|
.It Dv TIOCSTART
|
|
Restarts output (stopped by
|
|
.Dv TIOCSTOP
|
|
or by typing
|
|
.Ql ^S ) .
|
|
Takes no parameter.
|
|
.It Dv TIOCPKT
|
|
Enable/disable
|
|
.Em 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
|
|
.Xr 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
|
|
.Dv 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:
|
|
.Bl -tag -width TIOCPKT_FLUSHWRITE
|
|
.It Dv TIOCPKT_FLUSHREAD
|
|
whenever the read queue for the terminal is flushed.
|
|
.It Dv TIOCPKT_FLUSHWRITE
|
|
whenever the write queue for the terminal is flushed.
|
|
.It Dv TIOCPKT_STOP
|
|
whenever output to the terminal is stopped a la
|
|
.Ql ^S .
|
|
.It Dv TIOCPKT_START
|
|
whenever output to the terminal is restarted.
|
|
.It Dv TIOCPKT_DOSTOP
|
|
whenever
|
|
.Em t_stopc
|
|
is
|
|
.Ql ^S
|
|
and
|
|
.Em t_startc
|
|
is
|
|
.Ql ^Q .
|
|
.It Dv TIOCPKT_NOSTOP
|
|
whenever the start and stop characters are not
|
|
.Ql ^S/^Q .
|
|
.El
|
|
.Pp
|
|
While this mode is in use, the presence of control status information
|
|
to be read from the master side may be detected by a
|
|
.Xr select 2
|
|
for exceptional conditions.
|
|
.Pp
|
|
This mode is used by
|
|
.Xr rlogin 1
|
|
and
|
|
.Xr rlogind 8
|
|
to implement a remote-echoed, locally
|
|
.Ql ^S/^Q
|
|
flow-controlled
|
|
remote login with proper back-flushing of output; it can be
|
|
used by other similar programs.
|
|
.It Dv TIOCUCNTL
|
|
Enable/disable a mode that allows a small number of simple user
|
|
.Xr ioctl 2
|
|
commands to be passed through the pseudo-terminal,
|
|
using a protocol similar to that of
|
|
.Dv TIOCPKT .
|
|
The
|
|
.Dv TIOCUCNTL
|
|
and
|
|
.Dv 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
|
|
.Xr 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
|
|
.Xr ioctl 2
|
|
operation with no data; the command is given as
|
|
.Dv UIOCCMD Ns (n) ,
|
|
where
|
|
.Ar n
|
|
is a number in the range 1-255.
|
|
The operation value
|
|
.Ar n
|
|
will be received as a single byte on the next
|
|
.Xr read 2
|
|
from the master side.
|
|
The
|
|
.Xr ioctl 2
|
|
.Dv UIOCCMD Ns (0)
|
|
is a no-op that may be used to probe for
|
|
the existence of this facility.
|
|
As with
|
|
.Dv TIOCPKT
|
|
mode, command operations may be detected with a
|
|
.Xr select 2
|
|
for exceptional conditions.
|
|
.El
|
|
.Pp
|
|
There is currently two
|
|
.Nm
|
|
systems available: the original
|
|
.Bx Nm ,
|
|
and a
|
|
SysVR4 pts-like implementation.
|
|
It is possible to switch between the two implementations by setting the
|
|
.Va kern.pts.enable
|
|
sysctl.
|
|
Setting it to 0 will use the
|
|
.Bx Nm ,
|
|
to non-zero the pts implementation.
|
|
It defaults to 0.
|
|
It is possible to set the maximum number of ptys
|
|
which can be allocated at the same time with the
|
|
.Va kern.pts.max
|
|
sysctl.
|
|
It defaults to 1000.
|
|
It is not recommended to use more than 1000 pseudo-terminals, as all software
|
|
which use
|
|
.Xr utmp 5
|
|
will not be able to handle pseudo-terminals with number superior to 999.
|
|
.Pp
|
|
The pts implementation also supports the
|
|
.Dv TIOCGPTN
|
|
.Xr ioctl 2
|
|
call, which takes a pointer to an
|
|
.Vt "unsigned int"
|
|
as a parameter and provides the
|
|
number of the pty.
|
|
.Sh FILES
|
|
The files used by the
|
|
.Bx
|
|
pseudo terminals implementation are:
|
|
.Pp
|
|
.Bl -tag -width ".Pa /dev/tty[p-sP-S][0-9a-v]" -compact
|
|
.It Pa /dev/pty[p-sP-S][0-9a-v]
|
|
master pseudo terminals
|
|
.It Pa /dev/tty[p-sP-S][0-9a-v]
|
|
slave pseudo terminals
|
|
.El
|
|
.Pp
|
|
The files used by the pts implementation are:
|
|
.Pp
|
|
.Bl -tag -width ".Pa /dev/pts/[num]" -compact
|
|
.It Pa /dev/ptmx
|
|
control device, returns a file descriptor to a new master pseudo terminal
|
|
when opened.
|
|
.It Pa /dev/pty[num]
|
|
master pseudo terminals
|
|
.It Pa /dev/pts/[num]
|
|
slave pseudo terminals
|
|
.El
|
|
.Sh DIAGNOSTICS
|
|
None.
|
|
.Sh SEE ALSO
|
|
.Xr tty 4
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
driver appeared in
|
|
.Bx 4.2 .
|