]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/termios.3
inotify.7: Inotify does not report events for mmap(2) and msync(2)
[thirdparty/man-pages.git] / man3 / termios.3
CommitLineData
fea681da
MK
1.\" Copyright (c) 1993 Michael Haardt
2.\" (michael@moria.de)
3.\" Fri Apr 2 11:32:09 MET DST 1993
4.\"
1dd72f9c 5.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
fea681da
MK
6.\" This is free documentation; you can redistribute it and/or
7.\" modify it under the terms of the GNU General Public License as
8.\" published by the Free Software Foundation; either version 2 of
9.\" the License, or (at your option) any later version.
10.\"
11.\" The GNU General Public License's references to "object code"
12.\" and "executables" are to be interpreted as the output of any
13.\" document formatting or typesetting system, including
14.\" intermediate and printed output.
15.\"
16.\" This manual is distributed in the hope that it will be useful,
17.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
18.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19.\" GNU General Public License for more details.
20.\"
21.\" You should have received a copy of the GNU General Public
c715f741
MK
22.\" License along with this manual; if not, see
23.\" <http://www.gnu.org/licenses/>.
6a8d8745 24.\" %%%LICENSE_END
fea681da
MK
25.\"
26.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
27.\" Modified 1995-02-25 by Jim Van Zandt <jrv@vanzandt.mv.com>
28.\" Modified 1995-09-02 by Jim Van Zandt <jrv@vanzandt.mv.com>
29.\" moved to man3, aeb, 950919
c11b1abf 30.\" Modified 2001-09-22 by Michael Kerrisk <mtk.manpages@gmail.com>
fea681da
MK
31.\" Modified 2001-12-17, aeb
32.\" Modified 2004-10-31, aeb
19ab0376
MK
33.\" 2006-12-28, mtk:
34.\" Added .SS headers to give some structure to this page; and a
35.\" small amount of reordering.
a6712802 36.\" Added a section on canonical and noncanonical mode.
19ab0376
MK
37.\" Enhanced the discussion of "raw" mode for cfmakeraw().
38.\" Document CMSPAR.
fea681da 39.\"
2be8b1b2 40.TH TERMIOS 3 2013-10-22 "Linux" "Linux Programmer's Manual"
fea681da
MK
41.SH NAME
42termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
43cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
44get and set terminal attributes, line control, get and set baud rate
45.SH SYNOPSIS
04bb6cc0 46.nf
c91e381d 47.B #include <termios.h>
fea681da 48.br
c91e381d 49.B #include <unistd.h>
fea681da
MK
50.sp
51.BI "int tcgetattr(int " fd ", struct termios *" termios_p );
52.sp
04bb6cc0
MK
53.BI "int tcsetattr(int " fd ", int " optional_actions ,
54.BI " const struct termios *" termios_p );
fea681da
MK
55.sp
56.BI "int tcsendbreak(int " fd ", int " duration );
57.sp
58.BI "int tcdrain(int " fd );
59.sp
60.BI "int tcflush(int " fd ", int " queue_selector );
61.sp
62.BI "int tcflow(int " fd ", int " action );
63.sp
64.BI "void cfmakeraw(struct termios *" termios_p );
65.sp
66.BI "speed_t cfgetispeed(const struct termios *" termios_p );
67.sp
68.BI "speed_t cfgetospeed(const struct termios *" termios_p );
69.sp
70.BI "int cfsetispeed(struct termios *" termios_p ", speed_t " speed );
71.sp
72.BI "int cfsetospeed(struct termios *" termios_p ", speed_t " speed );
01d5d366 73.sp
52dab97a 74.BI "int cfsetspeed(struct termios *" termios_p ", speed_t " speed );
04bb6cc0 75.fi
cc4615cc
MK
76.sp
77.in -4n
78Feature Test Macro Requirements for glibc (see
79.BR feature_test_macros (7)):
80.in
81.sp
cc4615cc
MK
82.BR cfsetspeed (),
83.BR cfmakeraw ():
84_BSD_SOURCE
fea681da
MK
85.SH DESCRIPTION
86The termios functions describe a general terminal interface that is
87provided to control asynchronous communications ports.
73d8cece 88.SS The termios structure
fea681da
MK
89.LP
90Many of the functions described here have a \fItermios_p\fP argument
c13182ef
MK
91that is a pointer to a \fItermios\fP structure.
92This structure contains at least the following members:
fea681da 93.sp
a6e2f128 94.in +4n
fea681da 95.nf
bd9b2a9c
MK
96tcflag_t c_iflag; /* input modes */
97tcflag_t c_oflag; /* output modes */
98tcflag_t c_cflag; /* control modes */
99tcflag_t c_lflag; /* local modes */
d8b24e6e 100cc_t c_cc[NCCS]; /* special characters */
fea681da 101.fi
a6e2f128 102.in
fea681da 103.PP
869ebe5b 104The values that may be assigned to these fields are described below.
c13182ef
MK
105In the case of the first four bit-mask fields,
106the definitions of some of the associated flags that may be set are
33a0ccb2 107exposed only if a specific feature test macro (see
a8e7c990 108.BR feature_test_macros (7))
869ebe5b
MK
109is defined, as noted in brackets ("[]").
110.PP
42b09930 111In the descriptions below, "not in POSIX" means that the
c13182ef
MK
112value is not specified in POSIX.1-2001,
113and "XSI" means that the value is specified in POSIX.1-2001
42b09930
MK
114as part of the XSI extension.
115.PP
fea681da
MK
116\fIc_iflag\fP flag constants:
117.TP
118.B IGNBRK
119Ignore BREAK condition on input.
120.TP
121.B BRKINT
c13182ef
MK
122If \fBIGNBRK\fP is set, a BREAK is ignored.
123If it is not set
fea681da
MK
124but \fBBRKINT\fP is set, then a BREAK causes the input and output
125queues to be flushed, and if the terminal is the controlling
126terminal of a foreground process group, it will cause a
127\fBSIGINT\fP to be sent to this foreground process group.
128When neither \fBIGNBRK\fP nor \fBBRKINT\fP are set, a BREAK
f81fb444 129reads as a null byte (\(aq\\0\(aq), except when \fBPARMRK\fP is set,
fea681da
MK
130in which case it reads as the sequence \\377 \\0 \\0.
131.TP
132.B IGNPAR
133Ignore framing errors and parity errors.
134.TP
135.B PARMRK
c13182ef
MK
136If \fBIGNPAR\fP is not set, prefix a character with a parity error or
137framing error with \\377 \\0.
138If neither \fBIGNPAR\fP nor \fBPARMRK\fP
fea681da
MK
139is set, read a character with a parity error or framing error
140as \\0.
141.TP
142.B INPCK
143Enable input parity checking.
144.TP
145.B ISTRIP
146Strip off eighth bit.
147.TP
148.B INLCR
149Translate NL to CR on input.
150.TP
151.B IGNCR
152Ignore carriage return on input.
153.TP
154.B ICRNL
155Translate carriage return to newline on input (unless \fBIGNCR\fP is set).
156.TP
157.B IUCLC
158(not in POSIX) Map uppercase characters to lowercase on input.
159.TP
160.B IXON
161Enable XON/XOFF flow control on output.
162.TP
163.B IXANY
c13182ef 164(XSI) Typing any character will restart stopped output.
42b09930 165(The default is to allow just the START character to restart output.)
fea681da
MK
166.TP
167.B IXOFF
168Enable XON/XOFF flow control on input.
169.TP
170.B IMAXBEL
171(not in POSIX) Ring bell when input queue is full.
172Linux does not implement this bit, and acts as if it is always set.
225c76e9
MK
173.TP
174.BR IUTF8 " (since Linux 2.6.4)"
c13182ef 175(not in POSIX) Input is UTF8;
225c76e9 176this allows character-erase to be correctly performed in cooked mode.
fea681da
MK
177.PP
178\fIc_oflag\fP flag constants defined in POSIX.1:
179.TP
180.B OPOST
181Enable implementation-defined output processing.
182.PP
68e1685c 183The remaining \fIc_oflag\fP flag constants are defined in POSIX.1-2001,
fea681da
MK
184unless marked otherwise.
185.TP
186.B OLCUC
187(not in POSIX) Map lowercase characters to uppercase on output.
188.TP
189.B ONLCR
190(XSI) Map NL to CR-NL on output.
191.TP
192.B OCRNL
193Map CR to NL on output.
194.TP
195.B ONOCR
196Don't output CR at column 0.
197.TP
198.B ONLRET
199Don't output CR.
200.TP
201.B OFILL
202Send fill characters for a delay, rather than using a timed delay.
203.TP
204.B OFDEL
205(not in POSIX) Fill character is ASCII DEL (0177).
f81fb444 206If unset, fill character is ASCII NUL (\(aq\\0\(aq).
42b09930 207(Not implemented on Linux.)
fea681da
MK
208.TP
209.B NLDLY
c13182ef
MK
210Newline delay mask.
211Values are \fBNL0\fP and \fBNL1\fP.
db4e96b7
MK
212[requires
213.B _BSD_SOURCE
214or
215.B _SVID_SOURCE
c90511a6
MK
216or
217.BR _XOPEN_SOURCE ]
fea681da
MK
218.TP
219.B CRDLY
220Carriage return delay mask.
221Values are \fBCR0\fP, \fBCR1\fP, \fBCR2\fP, or \fBCR3\fP.
db4e96b7
MK
222[requires
223.B _BSD_SOURCE
224or
225.B _SVID_SOURCE
c90511a6
MK
226or
227.BR _XOPEN_SOURCE ]
fea681da
MK
228.TP
229.B TABDLY
230Horizontal tab delay mask.
231Values are \fBTAB0\fP, \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP (or \fBXTABS\fP).
232A value of TAB3, that is, XTABS, expands tabs to spaces
233(with tab stops every eight columns).
db4e96b7
MK
234[requires
235.B _BSD_SOURCE
236or
237.B _SVID_SOURCE
c90511a6
MK
238or
239.BR _XOPEN_SOURCE ]
fea681da
MK
240.TP
241.B BSDLY
c13182ef
MK
242Backspace delay mask.
243Values are \fBBS0\fP or \fBBS1\fP.
fea681da 244(Has never been implemented.)
db4e96b7
MK
245[requires
246.B _BSD_SOURCE
247or
248.B _SVID_SOURCE
c90511a6
MK
249or
250.BR _XOPEN_SOURCE ]
fea681da
MK
251.TP
252.B VTDLY
c13182ef
MK
253Vertical tab delay mask.
254Values are \fBVT0\fP or \fBVT1\fP.
fea681da
MK
255.TP
256.B FFDLY
c13182ef
MK
257Form feed delay mask.
258Values are \fBFF0\fP or \fBFF1\fP.
db4e96b7
MK
259[requires
260.B _BSD_SOURCE
261or
262.B _SVID_SOURCE
c90511a6
MK
263or
264.BR _XOPEN_SOURCE ]
fea681da
MK
265.PP
266\fIc_cflag\fP flag constants:
267.TP
268.B CBAUD
269(not in POSIX) Baud speed mask (4+1 bits).
db4e96b7
MK
270[requires
271.B _BSD_SOURCE
c90511a6
MK
272or
273.BR _SVID_SOURCE ]
fea681da
MK
274.TP
275.B CBAUDEX
097585ed
MK
276(not in POSIX) Extra baud speed mask (1 bit), included in
277.BR CBAUD .
db4e96b7
MK
278[requires
279.B _BSD_SOURCE
c90511a6
MK
280or
281.BR _SVID_SOURCE ]
42b09930 282.sp
c13182ef
MK
283(POSIX says that the baud speed is stored in the
284.I termios
42b09930 285structure without specifying where precisely, and provides
63aa9df0 286.BR cfgetispeed ()
fea681da 287and
63aa9df0 288.BR cfsetispeed ()
c13182ef 289for getting at it.
097585ed
MK
290Some systems use bits selected by
291.B CBAUD
292in
fea681da 293.IR c_cflag ,
75b94dc3 294other systems use separate fields, for example,
fea681da
MK
295.I sg_ispeed
296and
297.IR sg_ospeed .)
298.TP
299.B CSIZE
300Character size mask.
301Values are \fBCS5\fP, \fBCS6\fP, \fBCS7\fP, or \fBCS8\fP.
302.TP
303.B CSTOPB
304Set two stop bits, rather than one.
305.TP
306.B CREAD
307Enable receiver.
308.TP
309.B PARENB
310Enable parity generation on output and parity checking for input.
311.TP
312.B PARODD
c13182ef 313If set, then parity for input and output is odd;
19ab0376 314otherwise even parity is used.
fea681da
MK
315.TP
316.B HUPCL
317Lower modem control lines after last process closes the device (hang up).
318.TP
319.B CLOCAL
320Ignore modem control lines.
321.TP
322.B LOBLK
24b74457 323(not in POSIX) Block output from a noncurrent shell layer.
42b09930 324For use by \fBshl\fP (shell layers). (Not implemented on Linux.)
fea681da
MK
325.TP
326.B CIBAUD
4a837837 327(not in POSIX) Mask for input speeds.
097585ed
MK
328The values for the
329.B CIBAUD
330bits are
331the same as the values for the
332.B CBAUD
333bits, shifted left
334.B IBSHIFT
335bits.
db4e96b7
MK
336[requires
337.B _BSD_SOURCE
c90511a6
MK
338or
339.BR _SVID_SOURCE ]
42b09930 340(Not implemented on Linux.)
fea681da 341.TP
adab6032 342.B CMSPAR
ad715af9 343(not in POSIX)
c13182ef 344Use "stick" (mark/space) parity (supported on certain serial
4a837837 345devices): if
c13182ef 346.B PARODD
adab6032 347is set, the parity bit is always 1; if
c13182ef 348.B PARODD
adab6032 349is not set, then the parity bit is always 0).
db4e96b7
MK
350[requires
351.B _BSD_SOURCE
c90511a6
MK
352or
353.BR _SVID_SOURCE ]
adab6032 354.TP
fea681da
MK
355.B CRTSCTS
356(not in POSIX) Enable RTS/CTS (hardware) flow control.
db4e96b7
MK
357[requires
358.B _BSD_SOURCE
c90511a6
MK
359or
360.BR _SVID_SOURCE ]
fea681da
MK
361.PP
362\fIc_lflag\fP flag constants:
363.TP
364.B ISIG
365When any of the characters INTR, QUIT, SUSP, or DSUSP are received,
366generate the corresponding signal.
367.TP
368.B ICANON
c13182ef 369Enable canonical mode (described below).
fea681da
MK
370.TP
371.B XCASE
372(not in POSIX; not supported under Linux)
373If \fBICANON\fP is also set, terminal is uppercase only.
374Input is converted to lowercase, except for characters preceded by \\.
375On output, uppercase characters are preceded by \\ and lowercase
376characters are converted to uppercase.
eee28e75 377[requires _BSD_SOURCE or _SVID_SOURCE or _XOPEN_SOURCE]
c3dfd2c8 378.\" glibc is probably now wrong to allow
eee28e75
MK
379.\" Define
380.\" .B _XOPEN_SOURCE
381.\" to expose
382.\" .BR XCASE .
fea681da
MK
383.TP
384.B ECHO
385Echo input characters.
386.TP
387.B ECHOE
388If \fBICANON\fP is also set, the ERASE character erases the preceding
389input character, and WERASE erases the preceding word.
390.TP
391.B ECHOK
392If \fBICANON\fP is also set, the KILL character erases the current line.
393.TP
394.B ECHONL
395If \fBICANON\fP is also set, echo the NL character even if ECHO is not set.
396.TP
397.B ECHOCTL
d8b24e6e
MK
398(not in POSIX) If \fBECHO\fP is also set,
399terminal special characters other than
8bb93cd4
MK
400TAB, NL, START, and STOP are echoed as \fB^X\fP,
401where X is the character with
d8b24e6e 402ASCII code 0x40 greater than the special character.
c13182ef 403For example, character
8bb93cd4 4040x08 (BS) is echoed as \fB^H\fP.
db4e96b7
MK
405[requires
406.B _BSD_SOURCE
c90511a6
MK
407or
408.BR _SVID_SOURCE ]
fea681da
MK
409.TP
410.B ECHOPRT
96da8065 411(not in POSIX) If \fBICANON\fP and \fBECHO\fP are also set, characters
fea681da 412are printed as they are being erased.
db4e96b7
MK
413[requires
414.B _BSD_SOURCE
c90511a6
MK
415or
416.BR _SVID_SOURCE ]
fea681da
MK
417.TP
418.B ECHOKE
419(not in POSIX) If \fBICANON\fP is also set, KILL is echoed by erasing
420each character on the line, as specified by \fBECHOE\fP and \fBECHOPRT\fP.
db4e96b7
MK
421[requires
422.B _BSD_SOURCE
c90511a6
MK
423or
424.BR _SVID_SOURCE ]
fea681da
MK
425.TP
426.B DEFECHO
427(not in POSIX) Echo only when a process is reading.
42b09930 428(Not implemented on Linux.)
fea681da
MK
429.TP
430.B FLUSHO
431(not in POSIX; not supported under Linux)
c13182ef
MK
432Output is being flushed.
433This flag is toggled by typing
fea681da 434the DISCARD character.
db4e96b7
MK
435[requires
436.B _BSD_SOURCE
c90511a6
MK
437or
438.BR _SVID_SOURCE ]
fea681da
MK
439.TP
440.B NOFLSH
6e502d47
MK
441Disable flushing the input and output queues when generating signals for the
442INT, QUIT, and SUSP characters.
443.\" Stevens lets SUSP only flush the input queue
fea681da
MK
444.TP
445.B TOSTOP
8bd58774
MK
446Send the
447.B SIGTTOU
448signal to the process group of a background process
fea681da
MK
449which tries to write to its controlling terminal.
450.TP
451.B PENDIN
452(not in POSIX; not supported under Linux)
453All characters in the input queue are reprinted when
c13182ef 454the next character is read.
5852aba2
MK
455.RB ( bash (1)
456handles typeahead this way.)
db4e96b7
MK
457[requires
458.B _BSD_SOURCE
c90511a6
MK
459or
460.BR _SVID_SOURCE ]
fea681da
MK
461.TP
462.B IEXTEN
463Enable implementation-defined input processing.
0425de01 464This flag, as well as \fBICANON\fP must be enabled for the
fea681da
MK
465special characters EOL2, LNEXT, REPRINT, WERASE to be interpreted,
466and for the \fBIUCLC\fP flag to be effective.
467.PP
d8b24e6e 468The \fIc_cc\fP array defines the terminal special characters.
fea681da
MK
469The symbolic indices (initial values) and meaning are:
470.TP
91e2779f
MK
471.B VDISCARD
472(not in POSIX; not supported under Linux; 017, SI, Ctrl-O)
473Toggle: start/stop discarding pending output.
097585ed 474Recognized when
91e2779f 475.B IEXTEN
097585ed 476is set, and then not passed as input.
fea681da 477.TP
91e2779f
MK
478.B VDSUSP
479(not in POSIX; not supported under Linux; 031, EM, Ctrl-Y)
489e425d 480Delayed suspend character (DSUSP):
91e2779f
MK
481send
482.B SIGTSTP
483signal when the character is read by the user program.
097585ed 484Recognized when
91e2779f
MK
485.B IEXTEN
486and
097585ed 487.B ISIG
91e2779f
MK
488are set, and the system supports
489job control, and then not passed as input.
fea681da
MK
490.TP
491.B VEOF
492(004, EOT, Ctrl-D)
489e425d 493End-of-file character (EOF).
fea681da
MK
494More precisely: this character causes the pending tty buffer to be sent
495to the waiting user program without waiting for end-of-line.
d9c1ae64
MK
496If it is the first character of the line, the
497.BR read (2)
498in the user program returns 0, which signifies end-of-file.
097585ed
MK
499Recognized when
500.B ICANON
501is set, and then not passed as input.
fea681da 502.TP
fea681da
MK
503.B VEOL
504(0, NUL)
489e425d 505Additional end-of-line character (EOL).
097585ed
MK
506Recognized when
507.B ICANON
508is set.
fea681da 509.TP
fea681da
MK
510.B VEOL2
511(not in POSIX; 0, NUL)
489e425d 512Yet another end-of-line character (EOL2).
097585ed
MK
513Recognized when
514.B ICANON
515is set.
fea681da 516.TP
91e2779f
MK
517.B VERASE
518(0177, DEL, rubout, or 010, BS, Ctrl-H, or also #)
489e425d 519Erase character (ERASE).
91e2779f
MK
520This erases the previous not-yet-erased character,
521but does not erase past EOF or beginning-of-line.
097585ed 522Recognized when
91e2779f 523.B ICANON
097585ed 524is set, and then not passed as input.
fea681da 525.TP
91e2779f
MK
526.B VINTR
527(003, ETX, Ctrl-C, or also 0177, DEL, rubout)
489e425d 528Interrupt character (INTR).
91e2779f
MK
529Send a
530.B SIGINT
8bd58774 531signal.
097585ed
MK
532Recognized when
533.B ISIG
534is set, and then not passed as input.
fea681da 535.TP
91e2779f
MK
536.B VKILL
537(025, NAK, Ctrl-U, or Ctrl-X, or also @)
489e425d 538Kill character (KILL).
91e2779f 539This erases the input since the last EOF or beginning-of-line.
097585ed 540Recognized when
91e2779f
MK
541.B ICANON
542is set, and then not passed as input.
fea681da
MK
543.TP
544.B VLNEXT
545(not in POSIX; 026, SYN, Ctrl-V)
489e425d 546Literal next (LNEXT).
c13182ef 547Quotes the next input character, depriving it of
fea681da 548a possible special meaning.
097585ed
MK
549Recognized when
550.B IEXTEN
551is set, and then not passed as input.
fea681da 552.TP
91e2779f 553.B VMIN
489e425d 554Minimum number of characters for noncanonical read (MIN).
91e2779f
MK
555.TP
556.B VQUIT
31a6818e 557(034, FS, Ctrl-\e)
489e425d 558Quit character (QUIT).
91e2779f
MK
559Send
560.B SIGQUIT
561signal.
097585ed 562Recognized when
91e2779f
MK
563.B ISIG
564is set, and then not passed as input.
fea681da
MK
565.TP
566.B VREPRINT
567(not in POSIX; 022, DC2, Ctrl-R)
489e425d 568Reprint unread characters (REPRINT).
097585ed
MK
569Recognized when
570.B ICANON
571and
572.B IEXTEN
573are set, and then not passed as input.
fea681da 574.TP
91e2779f
MK
575.B VSTART
576(021, DC1, Ctrl-Q)
489e425d 577Start character (START).
91e2779f 578Restarts output stopped by the Stop character.
097585ed 579Recognized when
91e2779f 580.B IXON
097585ed 581is set, and then not passed as input.
fea681da
MK
582.TP
583.B VSTATUS
584(not in POSIX; not supported under Linux;
585status request: 024, DC4, Ctrl-T).
a6639d09
MK
586Status character (STATUS).
587Display status information at terminal,
588including state of foreground process and amount of CPU time it has consumed.
589Also sends a
590.BR SIGINFO
591signal (not supported on Linux) to the foreground process group.
91e2779f
MK
592.TP
593.B VSTOP
594(023, DC3, Ctrl-S)
489e425d 595Stop character (STOP).
91e2779f
MK
596Stop output until Start character typed.
597Recognized when
598.B IXON
599is set, and then not passed as input.
600.TP
601.B VSUSP
602(032, SUB, Ctrl-Z)
489e425d 603Suspend character (SUSP).
91e2779f
MK
604Send
605.B SIGTSTP
606signal.
607Recognized when
608.B ISIG
609is set, and then not passed as input.
610.TP
611.B VSWTCH
612(not in POSIX; not supported under Linux; 0, NUL)
489e425d 613Switch character (SWTCH).
33b7fff5
MK
614Used in System V to switch shells in
615.IR "shell layers" ,
5aaf78b7 616a predecessor to shell job control.
91e2779f
MK
617.TP
618.B VTIME
489e425d 619Timeout in deciseconds for noncanonical read (TIME).
91e2779f
MK
620.TP
621.B VWERASE
622(not in POSIX; 027, ETB, Ctrl-W)
489e425d 623Word erase (WERASE).
91e2779f
MK
624Recognized when
625.B ICANON
626and
627.B IEXTEN
628are set, and then not passed as input.
fea681da 629.LP
d51529b8
MK
630An individual terminal special character can be disabled by setting
631the value of the corresponding
632.I c_cc
633element to
634.BR _POSIX_VDISABLE .
635.LP
636The above symbolic subscript values are all different, except that
097585ed 637.BR VTIME ,
0daa9e92 638.B VMIN
097585ed 639may have the same value as
3cf81850 640.BR VEOL ,
097585ed
MK
641.BR VEOF ,
642respectively.
a6712802 643In noncanonical mode the special character meaning is replaced
c13182ef 644by the timeout meaning.
097585ed
MK
645For an explanation of
646.B VMIN
647and
648.BR VTIME ,
649see the description of
a6712802 650noncanonical mode below.
73d8cece 651.SS Retrieving and changing terminal settings
fea681da 652.PP
63aa9df0 653.BR tcgetattr ()
fea681da 654gets the parameters associated with the object referred by \fIfd\fP and
869ebe5b 655stores them in the \fItermios\fP structure referenced by
c13182ef
MK
656\fItermios_p\fP.
657This function may be invoked from a background process;
fea681da
MK
658however, the terminal attributes may be subsequently changed by a
659foreground process.
660.LP
63aa9df0 661.BR tcsetattr ()
fea681da
MK
662sets the parameters associated with the terminal (unless support is
663required from the underlying hardware that is not available) from the
c13182ef 664\fItermios\fP structure referred to by \fItermios_p\fP.
fea681da
MK
665\fIoptional_actions\fP specifies when the changes take effect:
666.IP \fBTCSANOW\fP
667the change occurs immediately.
668.IP \fBTCSADRAIN\fP
669the change occurs after all output written to
670.I fd
c13182ef
MK
671has been transmitted.
672This function should be used when changing
fea681da
MK
673parameters that affect output.
674.IP \fBTCSAFLUSH\fP
675the change occurs after all output written to the object referred by
676.I fd
677has been transmitted, and all input that has been received but not read
678will be discarded before the change is made.
73d8cece 679.SS Canonical and noncanonical mode
19ab0376
MK
680The setting of the
681.B ICANON
682canon flag in
683.I c_lflag
684determines whether the terminal is operating in canonical mode
685.RB ( ICANON
686set) or
a6712802 687noncanonical mode
c13182ef 688.RB ( ICANON
19ab0376
MK
689unset).
690By default,
691.B ICANON
692set.
693
694In canonical mode:
695.IP * 2
696Input is made available line by line.
697An input line is available when one of the line delimiters
698is typed (NL, EOL, EOL2; or EOF at the start of line).
699Except in the case of EOF, the line delimiter is included
700in the buffer returned by
701.BR read (2).
702.IP * 2
c13182ef
MK
703Line editing is enabled (ERASE, KILL;
704and if the
19ab0376
MK
705.B IEXTEN
706flag is set: WERASE, REPRINT, LNEXT).
c13182ef 707A
fb186734 708.BR read (2)
19ab0376 709returns at most one line of input; if the
fb186734 710.BR read (2)
19ab0376
MK
711requested fewer bytes than are available in the current line of input,
712then only as many bytes as requested are read,
713and the remaining characters will be available for a future
fb186734 714.BR read (2).
19ab0376 715.PP
a6712802 716In noncanonical mode input is available immediately (without
19ab0376 717the user having to type a line-delimiter character),
764d3de3 718no input processing is performed,
19ab0376 719and line editing is disabled.
c13182ef 720The settings of MIN
19ab0376 721.RI ( c_cc[VMIN] )
0f8b10eb 722and TIME
19ab0376
MK
723.RI ( c_cc[VTIME] )
724determine the circumstances in which a
725.BR read (2)
726completes; there are four distinct cases:
727.IP * 2
728MIN == 0; TIME == 0:
729If data is available,
fb186734 730.BR read (2)
19ab0376
MK
731returns immediately, with the lesser of the number of bytes
732available, or the number of bytes requested.
733If no data is available,
fb186734 734.BR read (2)
19ab0376
MK
735returns 0.
736.IP * 2
737MIN > 0; TIME == 0:
fb186734 738.BR read (2)
19ab0376
MK
739blocks until the lesser of MIN bytes or the number of bytes requested
740are available, and returns the lesser of these two values.
741.IP * 2
742MIN == 0; TIME > 0:
743TIME specifies the limit for a timer in tenths of a second.
c13182ef 744The timer is started when
fb186734 745.BR read (2)
19ab0376 746is called.
fb186734 747.BR read (2)
19ab0376
MK
748returns either when at least one byte of data is available,
749or when the timer expires.
750If the timer expires without any input becoming available,
fb186734 751.BR read (2)
19ab0376
MK
752returns 0.
753.IP * 2
754MIN > 0; TIME > 0:
755TIME specifies the limit for a timer in tenths of a second.
756Once an initial byte of input becomes available,
757the timer is restarted after each further byte is received.
fb186734 758.BR read (2)
c13182ef 759returns either when the lesser of the number of bytes requested or
19ab0376 760MIN byte have been read,
03407e33 761or when the interbyte timeout expires.
33a0ccb2 762Because the timer is started only after the initial byte
19ab0376 763becomes available, at least one byte will be read.
73d8cece 764.SS Raw mode
19ab0376 765.LP
60a90ecd
MK
766.BR cfmakeraw ()
767sets the terminal to something like the
1954b6a9 768"raw" mode of the old Version 7 terminal driver:
19ab0376 769input is available character by character,
c13182ef 770echoing is disabled, and all special processing of
19ab0376
MK
771terminal input and output characters is disabled.
772The terminal attributes are set as follows:
773.nf
774
94e9d9fe 775 termios_p\->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
19ab0376 776 | INLCR | IGNCR | ICRNL | IXON);
94e9d9fe
MK
777 termios_p\->c_oflag &= ~OPOST;
778 termios_p\->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
779 termios_p\->c_cflag &= ~(CSIZE | PARENB);
780 termios_p\->c_cflag |= CS8;
19ab0376 781.fi
73d8cece 782.SS Line control
fea681da 783.LP
63aa9df0 784.BR tcsendbreak ()
fea681da
MK
785transmits a continuous stream of zero-valued bits for a specific
786duration, if the terminal is using asynchronous serial data
c13182ef
MK
787transmission.
788If \fIduration\fP is zero, it transmits zero-valued bits
789for at least 0.25 seconds, and not more that 0.5 seconds.
790If \fIduration\fP is not zero, it sends zero-valued bits for some
fea681da
MK
791implementation-defined length of time.
792.LP
793If the terminal is not using asynchronous serial data transmission,
60a90ecd
MK
794.BR tcsendbreak ()
795returns without taking any action.
fea681da 796.LP
63aa9df0 797.BR tcdrain ()
fea681da
MK
798waits until all output written to the object referred to by
799.I fd
800has been transmitted.
801.LP
63aa9df0 802.BR tcflush ()
fea681da
MK
803discards data written to the object referred to by
804.I fd
805but not transmitted, or data received but not read, depending on the
806value of
807.IR queue_selector :
808.IP \fBTCIFLUSH\fP
809flushes data received but not read.
810.IP \fBTCOFLUSH\fP
811flushes data written but not transmitted.
812.IP \fBTCIOFLUSH\fP
813flushes both data received but not read, and data written but not
814transmitted.
815.LP
63aa9df0 816.BR tcflow ()
fea681da
MK
817suspends transmission or reception of data on the object referred to by
818.IR fd ,
819depending on the value of
820.IR action :
821.IP \fBTCOOFF\fP
822suspends output.
823.IP \fBTCOON\fP
824restarts suspended output.
825.IP \fBTCIOFF\fP
c13182ef 826transmits a STOP character, which stops the terminal device from
35478399 827transmitting data to the system.
fea681da 828.IP \fBTCION\fP
c13182ef 829transmits a START character, which starts the terminal device
35478399 830transmitting data to the system.
fea681da
MK
831.LP
832The default on open of a terminal file is that neither its input nor its
833output is suspended.
73d8cece 834.SS Line speed
87d1fd87 835The baud rate functions are provided for getting and setting the values
c13182ef
MK
836of the input and output baud rates in the \fItermios\fP structure.
837The new values do not take effect
60a90ecd
MK
838until
839.BR tcsetattr ()
840is successfully called.
87d1fd87
MK
841
842Setting the speed to \fBB0\fP instructs the modem to "hang up".
843The actual bit rate corresponding to \fBB38400\fP may be altered with
60a90ecd 844.BR setserial (8).
87d1fd87
MK
845.LP
846The input and output baud rates are stored in the \fItermios\fP
847structure.
fea681da 848.LP
63aa9df0 849.BR cfgetospeed ()
869ebe5b 850returns the output baud rate stored in the \fItermios\fP structure
fea681da
MK
851pointed to by
852.IR termios_p .
853.LP
63aa9df0 854.BR cfsetospeed ()
869ebe5b 855sets the output baud rate stored in the \fItermios\fP structure pointed
fea681da
MK
856to by \fItermios_p\fP to \fIspeed\fP, which must be one of these constants:
857.nf
869ebe5b 858
fea681da
MK
859.ft B
860 B0
861 B50
862 B75
863 B110
864 B134
865 B150
866 B200
867 B300
868 B600
869 B1200
870 B1800
871 B2400
872 B4800
873 B9600
874 B19200
875 B38400
876 B57600
877 B115200
878 B230400
879.ft P
869ebe5b 880
fea681da
MK
881.fi
882The zero baud rate, \fBB0\fP,
c13182ef
MK
883is used to terminate the connection.
884If B0 is specified, the modem control lines shall no longer be asserted.
be7fff26
MK
885Normally, this will disconnect the line.
886\fBCBAUDEX\fP is a mask
fea681da 887for the speeds beyond those defined in POSIX.1 (57600 and above).
c7094399 888Thus, \fBB57600\fP & \fBCBAUDEX\fP is nonzero.
fea681da 889.LP
63aa9df0 890.BR cfgetispeed ()
869ebe5b 891returns the input baud rate stored in the \fItermios\fP structure.
fea681da 892.LP
63aa9df0 893.BR cfsetispeed ()
869ebe5b 894sets the input baud rate stored in the \fItermios\fP structure to
c13182ef 895.IR speed ,
869ebe5b
MK
896which must be specified as one of the \fBBnnn\fP constants listed above for
897.BR cfsetospeed ().
fea681da
MK
898If the input baud rate is set to zero, the input baud rate will be
899equal to the output baud rate.
900.LP
63aa9df0 901.BR cfsetspeed ()
c13182ef
MK
902is a 4.4BSD extension.
903It takes the same arguments as
869ebe5b
MK
904.BR cfsetispeed (),
905and sets both input and output speed.
47297adb 906.SH RETURN VALUE
fea681da 907.LP
63aa9df0 908.BR cfgetispeed ()
fea681da 909returns the input baud rate stored in the
869ebe5b 910\fItermios\fP
fea681da
MK
911structure.
912.LP
63aa9df0 913.BR cfgetospeed ()
869ebe5b 914returns the output baud rate stored in the \fItermios\fP structure.
fea681da
MK
915.LP
916All other functions return:
917.IP 0
918on success.
919.IP \-1
920on failure and set
921.I errno
922to indicate the error.
923.LP
924Note that
f87925c6 925.BR tcsetattr ()
fea681da 926returns success if \fIany\fP of the requested changes could be
c13182ef
MK
927successfully carried out.
928Therefore, when making multiple changes
fea681da 929it may be necessary to follow this call with a further call to
f87925c6 930.BR tcgetattr ()
fea681da 931to check that all changes have been performed successfully.
2be8b1b2
PH
932.SH ATTRIBUTES
933.SS Multithreading (see pthreads(7))
934The
935.BR tcgetattr (),
936.BR tcsetattr (),
937.BR tcsendbreak (),
938.BR tcdrain (),
939.BR tcflush (),
940.BR tcflow (),
941.BR cfmakeraw (),
942.BR cfgetispeed (),
943.BR cfgetospeed (),
944.BR cfsetispeed (),
945.BR cfsetospeed (),
946and
947.BR cfsetspeed ()
948functions are thread-safe.
dfb631a8
MK
949.SH CONFORMING TO
950.BR tcgetattr (),
951.BR tcsetattr (),
952.BR tcsendbreak (),
953.BR tcdrain (),
954.BR tcflush (),
955.BR tcflow (),
956.BR cfgetispeed (),
957.BR cfgetospeed (),
958.BR cfsetispeed (),
959and
960.BR cfsetospeed ()
961are specified in POSIX.1-2001.
962
963.BR cfmakeraw ()
01d5d366
MK
964and
965.BR cfsetspeed ()
c8f2dd47 966are nonstandard, but available on the BSDs.
fea681da 967.SH NOTES
1f409d5d 968UNIX V7 and several later systems have a list of baud rates
fea681da
MK
969where after the fourteen values B0, ..., B9600 one finds the
970two constants EXTA, EXTB ("External A" and "External B").
971Many systems extend the list with much higher baud rates.
972.LP
c7094399 973The effect of a nonzero \fIduration\fP with
60a90ecd
MK
974.BR tcsendbreak ()
975varies.
c13182ef 976SunOS specifies a break of
8b8d0001 977.I "duration\ *\ N"
fea681da
MK
978seconds, where \fIN\fP is at least 0.25, and not more than 0.5.
979Linux, AIX, DU, Tru64 send a break of
980.I duration
981milliseconds.
982FreeBSD and NetBSD and HP-UX and MacOS ignore the value of
983.IR duration .
1f409d5d 984Under Solaris and UnixWare,
e511ffb6 985.BR tcsendbreak ()
c7094399 986with nonzero
fea681da
MK
987.I duration
988behaves like
e511ffb6 989.BR tcdrain ().
fea681da
MK
990.\" libc4 until 4.7.5, glibc for sysv: EINVAL for duration > 0.
991.\" libc4.7.6, libc5, glibc for unix: duration in ms.
992.\" glibc for bsd: duration in us
993.\" glibc for sunos4: ignore duration
47297adb 994.SH SEE ALSO
fea681da 995.BR stty (1),
fe62e3de
MK
996.BR console_ioctl (4),
997.BR tty_ioctl (4),
fea681da 998.BR setserial (8)