mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-24 11:29:10 +00:00
213 lines
6.4 KiB
Groff
213 lines
6.4 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
|
||
|
.\"
|
||
|
.Dd November 30, 1993
|
||
|
.Dt PTY 4
|
||
|
.Os BSD 4.2
|
||
|
.Sh NAME
|
||
|
.Nm pty
|
||
|
.Nd pseudo terminal driver
|
||
|
.Sh SYNOPSIS
|
||
|
.Nm pseudo-device pty
|
||
|
.Op Ar count
|
||
|
.Sh DESCRIPTION
|
||
|
The
|
||
|
.Xr pty
|
||
|
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
|
||
|
In configuring, if an optional
|
||
|
.Ar count
|
||
|
is given in
|
||
|
the specification, that number of pseudo terminal pairs are configured;
|
||
|
the default count is 32.
|
||
|
.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
|
||
|
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 .
|
||
|
.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.
|
||
|
.El
|
||
|
.It Dv TIOCUCNTL
|
||
|
Enable/disable a mode that allows a small number of simple user
|
||
|
.Xr ioctl
|
||
|
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
|
||
|
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
|
||
|
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
|
||
|
from the master side.
|
||
|
The
|
||
|
.Xr ioctl
|
||
|
.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
|
||
|
for exceptional conditions.
|
||
|
.It Dv TIOCREMOTE
|
||
|
A mode for the master half of a pseudo terminal, independent
|
||
|
of
|
||
|
.Dv 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.
|
||
|
.Dv TIOCREMOTE
|
||
|
can be used when doing remote line
|
||
|
editing in a window manager, or whenever flow controlled input
|
||
|
is required.
|
||
|
.El
|
||
|
.Sh FILES
|
||
|
.Bl -tag -width /dev/tty[p-r][0-9a-f]x -compact
|
||
|
.It Pa /dev/pty[p-r][0-9a-f]
|
||
|
master pseudo terminals
|
||
|
.It Pa /dev/tty[p-r][0-9a-f]
|
||
|
slave pseudo terminals
|
||
|
.El
|
||
|
.Sh DIAGNOSTICS
|
||
|
None.
|
||
|
.Sh HISTORY
|
||
|
The
|
||
|
.Nm
|
||
|
driver appeared in
|
||
|
.Bx 4.2 .
|