mirror of https://github.com/mkerrisk/man-pages
Added a section on canonical and non-canonical mode.
Clarify text for PARODD.
This commit is contained in:
parent
87d1fd8703
commit
19ab037640
145
man3/termios.3
145
man3/termios.3
|
@ -31,6 +31,12 @@
|
||||||
.\" Modified 2001-09-22 by Michael Kerrisk <mtk-manpages@gmx.net>
|
.\" Modified 2001-09-22 by Michael Kerrisk <mtk-manpages@gmx.net>
|
||||||
.\" Modified 2001-12-17, aeb
|
.\" Modified 2001-12-17, aeb
|
||||||
.\" Modified 2004-10-31, aeb
|
.\" Modified 2004-10-31, aeb
|
||||||
|
.\" 2006-12-28, mtk:
|
||||||
|
.\" Added .SS headers to give some structure to this page; and a
|
||||||
|
.\" small amount of reordering.
|
||||||
|
.\" Added a section on canonical and non-canonical mode.
|
||||||
|
.\" Enhanced the discussion of "raw" mode for cfmakeraw().
|
||||||
|
.\" Document CMSPAR.
|
||||||
.\"
|
.\"
|
||||||
.TH TERMIOS 3 2004-10-31 "Linux" "Linux Programmer's Manual"
|
.TH TERMIOS 3 2004-10-31 "Linux" "Linux Programmer's Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
|
@ -255,7 +261,8 @@ Enable receiver.
|
||||||
Enable parity generation on output and parity checking for input.
|
Enable parity generation on output and parity checking for input.
|
||||||
.TP
|
.TP
|
||||||
.B PARODD
|
.B PARODD
|
||||||
Parity for input and output is odd.
|
If set, then parity for input and output is odd;
|
||||||
|
otherwise even parity is used.
|
||||||
.TP
|
.TP
|
||||||
.B HUPCL
|
.B HUPCL
|
||||||
Lower modem control lines after last process closes the device (hang up).
|
Lower modem control lines after last process closes the device (hang up).
|
||||||
|
@ -280,7 +287,7 @@ Use "stick" (mark/space) parity (supported on certain serial
|
||||||
devices): if
|
devices): if
|
||||||
.B PARODD
|
.B PARODD
|
||||||
is set, the parity bit is always 1; if
|
is set, the parity bit is always 1; if
|
||||||
.B PARRODD
|
.B PARODD
|
||||||
is not set, then the parity bit is always 0).
|
is not set, then the parity bit is always 0).
|
||||||
[requires _BSD_SOURCE or _SVID_SOURCE]
|
[requires _BSD_SOURCE or _SVID_SOURCE]
|
||||||
.TP
|
.TP
|
||||||
|
@ -295,9 +302,7 @@ When any of the characters INTR, QUIT, SUSP, or DSUSP are received,
|
||||||
generate the corresponding signal.
|
generate the corresponding signal.
|
||||||
.TP
|
.TP
|
||||||
.B ICANON
|
.B ICANON
|
||||||
Enable canonical mode. This enables the special characters
|
Enable canonical mode (described below).
|
||||||
EOF, EOL, EOL2, ERASE, KILL, LNEXT, REPRINT, STATUS, and WERASE, and
|
|
||||||
buffers by lines.
|
|
||||||
.TP
|
.TP
|
||||||
.B XCASE
|
.B XCASE
|
||||||
(not in POSIX; not supported under Linux)
|
(not in POSIX; not supported under Linux)
|
||||||
|
@ -390,7 +395,8 @@ Recognized when ICANON is set, and then not passed as input.
|
||||||
.TP
|
.TP
|
||||||
.B VKILL
|
.B VKILL
|
||||||
(025, NAK, Ctrl-U, or Ctrl-X, or also @)
|
(025, NAK, Ctrl-U, or Ctrl-X, or also @)
|
||||||
Kill character. This erases the input since the last EOF or beginning-of-line.
|
Kill character.
|
||||||
|
This erases the input since the last EOF or beginning-of-line.
|
||||||
Recognized when ICANON is set, and then not passed as input.
|
Recognized when ICANON is set, and then not passed as input.
|
||||||
.TP
|
.TP
|
||||||
.B VEOF
|
.B VEOF
|
||||||
|
@ -473,17 +479,8 @@ These symbolic subscript values are all different, except that
|
||||||
VTIME, VMIN may have the same value as VEOL, VEOF, respectively.
|
VTIME, VMIN may have the same value as VEOL, VEOF, respectively.
|
||||||
In non-canonical mode the special character meaning is replaced
|
In non-canonical mode the special character meaning is replaced
|
||||||
by the timeout meaning.
|
by the timeout meaning.
|
||||||
MIN (indexed using VMIN) represents the minimum number of characters
|
For an explanation of VMIN and VTIME, see the description of
|
||||||
that should be received to satisfy the read.
|
non-canonical mode below.
|
||||||
TIME (indexed using VTIME) is a decisecond-valued
|
|
||||||
timer. When both are set, a read will wait until at least one character
|
|
||||||
has been received, and then return as soon as either MIN characters
|
|
||||||
have been received or time TIME has passed since the last character
|
|
||||||
was received. If only MIN is set, the read will not return before
|
|
||||||
MIN characters have been received. If only TIME is set, the read will
|
|
||||||
return as soon as either at least one character has been received,
|
|
||||||
or the timer times out. If neither is set, the read will return
|
|
||||||
immediately, only giving the currently already available characters.
|
|
||||||
.SS "Retrieving and changing terminal settings"
|
.SS "Retrieving and changing terminal settings"
|
||||||
.PP
|
.PP
|
||||||
.BR tcgetattr ()
|
.BR tcgetattr ()
|
||||||
|
@ -510,6 +507,107 @@ the change occurs after all output written to the object referred by
|
||||||
.I fd
|
.I fd
|
||||||
has been transmitted, and all input that has been received but not read
|
has been transmitted, and all input that has been received but not read
|
||||||
will be discarded before the change is made.
|
will be discarded before the change is made.
|
||||||
|
.SS "Canonical and non-canonical mode"
|
||||||
|
The setting of the
|
||||||
|
.B ICANON
|
||||||
|
canon flag in
|
||||||
|
.I c_lflag
|
||||||
|
determines whether the terminal is operating in canonical mode
|
||||||
|
.RB ( ICANON
|
||||||
|
set) or
|
||||||
|
non-canonical mode
|
||||||
|
.RB ( ICANON
|
||||||
|
unset).
|
||||||
|
By default,
|
||||||
|
.B ICANON
|
||||||
|
set.
|
||||||
|
|
||||||
|
In canonical mode:
|
||||||
|
.IP * 2
|
||||||
|
Input is made available line by line.
|
||||||
|
An input line is available when one of the line delimiters
|
||||||
|
is typed (NL, EOL, EOL2; or EOF at the start of line).
|
||||||
|
Except in the case of EOF, the line delimiter is included
|
||||||
|
in the buffer returned by
|
||||||
|
.BR read (2).
|
||||||
|
.IP * 2
|
||||||
|
Line editing is enabled (ERASE, KILL;
|
||||||
|
and if the
|
||||||
|
.B IEXTEN
|
||||||
|
flag is set: WERASE, REPRINT, LNEXT).
|
||||||
|
A
|
||||||
|
.BR read ()
|
||||||
|
returns at most one line of input; if the
|
||||||
|
.BR read ()
|
||||||
|
requested fewer bytes than are available in the current line of input,
|
||||||
|
then only as many bytes as requested are read,
|
||||||
|
and the remaining characters will be available for a future
|
||||||
|
.BR read ().
|
||||||
|
.PP
|
||||||
|
In non-canonical mode input is available immediately (without
|
||||||
|
the user having to type a line-delimiter character),
|
||||||
|
and line editing is disabled.
|
||||||
|
The settings of MIN
|
||||||
|
.RI ( c_cc[VMIN] )
|
||||||
|
and
|
||||||
|
.RI ( c_cc[VTIME] )
|
||||||
|
determine the circumstances in which a
|
||||||
|
.BR read (2)
|
||||||
|
completes; there are four distinct cases:
|
||||||
|
.IP * 2
|
||||||
|
MIN == 0; TIME == 0:
|
||||||
|
If data is available,
|
||||||
|
.BR read ()
|
||||||
|
returns immediately, with the lesser of the number of bytes
|
||||||
|
available, or the number of bytes requested.
|
||||||
|
If no data is available,
|
||||||
|
.BR read ()
|
||||||
|
returns 0.
|
||||||
|
.IP * 2
|
||||||
|
MIN > 0; TIME == 0:
|
||||||
|
.BR read ()
|
||||||
|
blocks until the lesser of MIN bytes or the number of bytes requested
|
||||||
|
are available, and returns the lesser of these two values.
|
||||||
|
.IP * 2
|
||||||
|
MIN == 0; TIME > 0:
|
||||||
|
TIME specifies the limit for a timer in tenths of a second.
|
||||||
|
The timer is started when
|
||||||
|
.BR read ()
|
||||||
|
is called.
|
||||||
|
.BR read ()
|
||||||
|
returns either when at least one byte of data is available,
|
||||||
|
or when the timer expires.
|
||||||
|
If the timer expires without any input becoming available,
|
||||||
|
.BR read ()
|
||||||
|
returns 0.
|
||||||
|
.IP * 2
|
||||||
|
MIN > 0; TIME > 0:
|
||||||
|
TIME specifies the limit for a timer in tenths of a second.
|
||||||
|
Once an initial byte of input becomes available,
|
||||||
|
the timer is restarted after each further byte is received.
|
||||||
|
.BR read ()
|
||||||
|
returns either when the lesser of the number of bytes requested or
|
||||||
|
MIN byte have been read,
|
||||||
|
or when the inter-byte timeout expires.
|
||||||
|
Because the timer is only started after the initial byte
|
||||||
|
becomes available, at least one byte will be read.
|
||||||
|
.SS "Raw mode"
|
||||||
|
.LP
|
||||||
|
\fBcfmakeraw\fP() sets the terminal to something like the
|
||||||
|
the "raw" mode of the old Version 7 terminal driver:
|
||||||
|
input is available character by character,
|
||||||
|
echoing is disabled, and all special processing of
|
||||||
|
terminal input and output characters is disabled.
|
||||||
|
The terminal attributes are set as follows:
|
||||||
|
.nf
|
||||||
|
|
||||||
|
termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
|
||||||
|
| INLCR | IGNCR | ICRNL | IXON);
|
||||||
|
termios_p->c_oflag &= ~OPOST;
|
||||||
|
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
|
||||||
|
termios_p->c_cflag &= ~(CSIZE | PARENB);
|
||||||
|
termios_p->c_cflag |= CS8;
|
||||||
|
.fi
|
||||||
.SS "Line control"
|
.SS "Line control"
|
||||||
.LP
|
.LP
|
||||||
.BR tcsendbreak ()
|
.BR tcsendbreak ()
|
||||||
|
@ -560,19 +658,6 @@ transmitting data to the system.
|
||||||
.LP
|
.LP
|
||||||
The default on open of a terminal file is that neither its input nor its
|
The default on open of a terminal file is that neither its input nor its
|
||||||
output is suspended.
|
output is suspended.
|
||||||
.LP
|
|
||||||
.SS "Raw mode"
|
|
||||||
.LP
|
|
||||||
\fBcfmakeraw\fP() sets the terminal attributes as follows:
|
|
||||||
.nf
|
|
||||||
|
|
||||||
termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
|
|
||||||
| INLCR | IGNCR | ICRNL | IXON);
|
|
||||||
termios_p->c_oflag &= ~OPOST;
|
|
||||||
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
|
|
||||||
termios_p->c_cflag &= ~(CSIZE | PARENB);
|
|
||||||
termios_p->c_cflag |= CS8;
|
|
||||||
.fi
|
|
||||||
.SS "Line speed"
|
.SS "Line speed"
|
||||||
The baud rate functions are provided for getting and setting the values
|
The baud rate functions are provided for getting and setting the values
|
||||||
of the input and output baud rates in the \fItermios\fP structure. The
|
of the input and output baud rates in the \fItermios\fP structure. The
|
||||||
|
|
Loading…
Reference in New Issue