1 .\" Copyright (c) 1993 Michael Haardt
3 .\" Fri Apr 2 11:32:09 MET DST 1993
5 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
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.
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.
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.
21 .\" You should have received a copy of the GNU General Public
22 .\" License along with this manual; if not, see
23 .\" <http://www.gnu.org/licenses/>.
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
30 .\" Modified 2001-09-22 by Michael Kerrisk <mtk.manpages@gmail.com>
31 .\" Modified 2001-12-17, aeb
32 .\" Modified 2004-10-31, aeb
34 .\" Added .SS headers to give some structure to this page; and a
35 .\" small amount of reordering.
36 .\" Added a section on canonical and noncanonical mode.
37 .\" Enhanced the discussion of "raw" mode for cfmakeraw().
40 .TH TERMIOS 3 2014-05-08 "Linux" "Linux Programmer's Manual"
42 termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
43 cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
44 get and set terminal attributes, line control, get and set baud rate
47 .B #include <termios.h>
49 .B #include <unistd.h>
51 .BI "int tcgetattr(int " fd ", struct termios *" termios_p );
53 .BI "int tcsetattr(int " fd ", int " optional_actions ,
54 .BI " const struct termios *" termios_p );
56 .BI "int tcsendbreak(int " fd ", int " duration );
58 .BI "int tcdrain(int " fd );
60 .BI "int tcflush(int " fd ", int " queue_selector );
62 .BI "int tcflow(int " fd ", int " action );
64 .BI "void cfmakeraw(struct termios *" termios_p );
66 .BI "speed_t cfgetispeed(const struct termios *" termios_p );
68 .BI "speed_t cfgetospeed(const struct termios *" termios_p );
70 .BI "int cfsetispeed(struct termios *" termios_p ", speed_t " speed );
72 .BI "int cfsetospeed(struct termios *" termios_p ", speed_t " speed );
74 .BI "int cfsetspeed(struct termios *" termios_p ", speed_t " speed );
78 Feature Test Macro Requirements for glibc (see
79 .BR feature_test_macros (7)):
86 The termios functions describe a general terminal interface that is
87 provided to control asynchronous communications ports.
88 .SS The termios structure
90 Many of the functions described here have a \fItermios_p\fP argument
91 that is a pointer to a \fItermios\fP structure.
92 This structure contains at least the following members:
96 tcflag_t c_iflag; /* input modes */
97 tcflag_t c_oflag; /* output modes */
98 tcflag_t c_cflag; /* control modes */
99 tcflag_t c_lflag; /* local modes */
100 cc_t c_cc[NCCS]; /* special characters */
104 The values that may be assigned to these fields are described below.
105 In the case of the first four bit-mask fields,
106 the definitions of some of the associated flags that may be set are
107 exposed only if a specific feature test macro (see
108 .BR feature_test_macros (7))
109 is defined, as noted in brackets ("[]").
111 In the descriptions below, "not in POSIX" means that the
112 value is not specified in POSIX.1-2001,
113 and "XSI" means that the value is specified in POSIX.1-2001
114 as part of the XSI extension.
116 \fIc_iflag\fP flag constants:
119 Ignore BREAK condition on input.
122 If \fBIGNBRK\fP is set, a BREAK is ignored.
124 but \fBBRKINT\fP is set, then a BREAK causes the input and output
125 queues to be flushed, and if the terminal is the controlling
126 terminal of a foreground process group, it will cause a
127 \fBSIGINT\fP to be sent to this foreground process group.
128 When neither \fBIGNBRK\fP nor \fBBRKINT\fP are set, a BREAK
129 reads as a null byte (\(aq\\0\(aq), except when \fBPARMRK\fP is set,
130 in which case it reads as the sequence \\377 \\0 \\0.
133 Ignore framing errors and parity errors.
136 If \fBIGNPAR\fP is not set, prefix a character with a parity error or
137 framing error with \\377 \\0.
138 If neither \fBIGNPAR\fP nor \fBPARMRK\fP
139 is set, read a character with a parity error or framing error
143 Enable input parity checking.
146 Strip off eighth bit.
149 Translate NL to CR on input.
152 Ignore carriage return on input.
155 Translate carriage return to newline on input (unless \fBIGNCR\fP is set).
158 (not in POSIX) Map uppercase characters to lowercase on input.
161 Enable XON/XOFF flow control on output.
164 (XSI) Typing any character will restart stopped output.
165 (The default is to allow just the START character to restart output.)
168 Enable XON/XOFF flow control on input.
171 (not in POSIX) Ring bell when input queue is full.
172 Linux does not implement this bit, and acts as if it is always set.
174 .BR IUTF8 " (since Linux 2.6.4)"
175 (not in POSIX) Input is UTF8;
176 this allows character-erase to be correctly performed in cooked mode.
182 Enable implementation-defined output processing.
185 (not in POSIX) Map lowercase characters to uppercase on output.
188 (XSI) Map NL to CR-NL on output.
191 Map CR to NL on output.
194 Don't output CR at column 0.
200 Send fill characters for a delay, rather than using a timed delay.
203 Fill character is ASCII DEL (0177).
204 If unset, fill character is ASCII NUL (\(aq\\0\(aq).
205 (Not implemented on Linux.)
209 Values are \fBNL0\fP and \fBNL1\fP.
218 Carriage return delay mask.
219 Values are \fBCR0\fP, \fBCR1\fP, \fBCR2\fP, or \fBCR3\fP.
228 Horizontal tab delay mask.
229 Values are \fBTAB0\fP, \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP (or \fBXTABS\fP).
230 A value of TAB3, that is, XTABS, expands tabs to spaces
231 (with tab stops every eight columns).
240 Backspace delay mask.
241 Values are \fBBS0\fP or \fBBS1\fP.
242 (Has never been implemented.)
251 Vertical tab delay mask.
252 Values are \fBVT0\fP or \fBVT1\fP.
255 Form feed delay mask.
256 Values are \fBFF0\fP or \fBFF1\fP.
264 \fIc_cflag\fP flag constants:
267 (not in POSIX) Baud speed mask (4+1 bits).
274 (not in POSIX) Extra baud speed mask (1 bit), included in
281 (POSIX says that the baud speed is stored in the
283 structure without specifying where precisely, and provides
288 Some systems use bits selected by
292 other systems use separate fields, for example,
299 Values are \fBCS5\fP, \fBCS6\fP, \fBCS7\fP, or \fBCS8\fP.
302 Set two stop bits, rather than one.
308 Enable parity generation on output and parity checking for input.
311 If set, then parity for input and output is odd;
312 otherwise even parity is used.
315 Lower modem control lines after last process closes the device (hang up).
318 Ignore modem control lines.
321 (not in POSIX) Block output from a noncurrent shell layer.
322 For use by \fBshl\fP (shell layers). (Not implemented on Linux.)
325 (not in POSIX) Mask for input speeds.
329 the same as the values for the
338 (Not implemented on Linux.)
342 Use "stick" (mark/space) parity (supported on certain serial
345 is set, the parity bit is always 1; if
347 is not set, then the parity bit is always 0.
354 (not in POSIX) Enable RTS/CTS (hardware) flow control.
360 \fIc_lflag\fP flag constants:
363 When any of the characters INTR, QUIT, SUSP, or DSUSP are received,
364 generate the corresponding signal.
367 Enable canonical mode (described below).
370 (not in POSIX; not supported under Linux)
371 If \fBICANON\fP is also set, terminal is uppercase only.
372 Input is converted to lowercase, except for characters preceded by \\.
373 On output, uppercase characters are preceded by \\ and lowercase
374 characters are converted to uppercase.
381 .\" glibc is probably now wrong to allow
388 Echo input characters.
391 If \fBICANON\fP is also set, the ERASE character erases the preceding
392 input character, and WERASE erases the preceding word.
395 If \fBICANON\fP is also set, the KILL character erases the current line.
398 If \fBICANON\fP is also set, echo the NL character even if ECHO is not set.
401 (not in POSIX) If \fBECHO\fP is also set,
402 terminal special characters other than
403 TAB, NL, START, and STOP are echoed as \fB^X\fP,
404 where X is the character with
405 ASCII code 0x40 greater than the special character.
406 For example, character
407 0x08 (BS) is echoed as \fB^H\fP.
414 (not in POSIX) If \fBICANON\fP and \fBECHO\fP are also set, characters
415 are printed as they are being erased.
422 (not in POSIX) If \fBICANON\fP is also set, KILL is echoed by erasing
423 each character on the line, as specified by \fBECHOE\fP and \fBECHOPRT\fP.
430 (not in POSIX) Echo only when a process is reading.
431 (Not implemented on Linux.)
434 (not in POSIX; not supported under Linux)
435 Output is being flushed.
436 This flag is toggled by typing
437 the DISCARD character.
444 Disable flushing the input and output queues when generating signals for the
445 INT, QUIT, and SUSP characters.
446 .\" Stevens lets SUSP only flush the input queue
451 signal to the process group of a background process
452 which tries to write to its controlling terminal.
455 (not in POSIX; not supported under Linux)
456 All characters in the input queue are reprinted when
457 the next character is read.
459 handles typeahead this way.)
466 Enable implementation-defined input processing.
467 This flag, as well as \fBICANON\fP must be enabled for the
468 special characters EOL2, LNEXT, REPRINT, WERASE to be interpreted,
469 and for the \fBIUCLC\fP flag to be effective.
471 The \fIc_cc\fP array defines the terminal special characters.
472 The symbolic indices (initial values) and meaning are:
475 (not in POSIX; not supported under Linux; 017, SI, Ctrl-O)
476 Toggle: start/stop discarding pending output.
479 is set, and then not passed as input.
482 (not in POSIX; not supported under Linux; 031, EM, Ctrl-Y)
483 Delayed suspend character (DSUSP):
486 signal when the character is read by the user program.
491 are set, and the system supports
492 job control, and then not passed as input.
496 End-of-file character (EOF).
497 More precisely: this character causes the pending tty buffer to be sent
498 to the waiting user program without waiting for end-of-line.
499 If it is the first character of the line, the
501 in the user program returns 0, which signifies end-of-file.
504 is set, and then not passed as input.
508 Additional end-of-line character (EOL).
514 (not in POSIX; 0, NUL)
515 Yet another end-of-line character (EOL2).
521 (0177, DEL, rubout, or 010, BS, Ctrl-H, or also #)
522 Erase character (ERASE).
523 This erases the previous not-yet-erased character,
524 but does not erase past EOF or beginning-of-line.
527 is set, and then not passed as input.
530 (003, ETX, Ctrl-C, or also 0177, DEL, rubout)
531 Interrupt character (INTR).
537 is set, and then not passed as input.
540 (025, NAK, Ctrl-U, or Ctrl-X, or also @)
541 Kill character (KILL).
542 This erases the input since the last EOF or beginning-of-line.
545 is set, and then not passed as input.
548 (not in POSIX; 026, SYN, Ctrl-V)
549 Literal next (LNEXT).
550 Quotes the next input character, depriving it of
551 a possible special meaning.
554 is set, and then not passed as input.
557 Minimum number of characters for noncanonical read (MIN).
561 Quit character (QUIT).
567 is set, and then not passed as input.
570 (not in POSIX; 022, DC2, Ctrl-R)
571 Reprint unread characters (REPRINT).
576 are set, and then not passed as input.
580 Start character (START).
581 Restarts output stopped by the Stop character.
584 is set, and then not passed as input.
587 (not in POSIX; not supported under Linux;
588 status request: 024, DC4, Ctrl-T).
589 Status character (STATUS).
590 Display status information at terminal,
591 including state of foreground process and amount of CPU time it has consumed.
594 signal (not supported on Linux) to the foreground process group.
598 Stop character (STOP).
599 Stop output until Start character typed.
602 is set, and then not passed as input.
606 Suspend character (SUSP).
612 is set, and then not passed as input.
615 (not in POSIX; not supported under Linux; 0, NUL)
616 Switch character (SWTCH).
617 Used in System V to switch shells in
619 a predecessor to shell job control.
622 Timeout in deciseconds for noncanonical read (TIME).
625 (not in POSIX; 027, ETB, Ctrl-W)
631 are set, and then not passed as input.
633 An individual terminal special character can be disabled by setting
634 the value of the corresponding
637 .BR _POSIX_VDISABLE .
639 The above symbolic subscript values are all different, except that
642 may have the same value as
646 In noncanonical mode the special character meaning is replaced
647 by the timeout meaning.
648 For an explanation of
652 see the description of
653 noncanonical mode below.
654 .SS Retrieving and changing terminal settings
657 gets the parameters associated with the object referred by \fIfd\fP and
658 stores them in the \fItermios\fP structure referenced by
660 This function may be invoked from a background process;
661 however, the terminal attributes may be subsequently changed by a
665 sets the parameters associated with the terminal (unless support is
666 required from the underlying hardware that is not available) from the
667 \fItermios\fP structure referred to by \fItermios_p\fP.
668 \fIoptional_actions\fP specifies when the changes take effect:
670 the change occurs immediately.
672 the change occurs after all output written to
674 has been transmitted.
675 This option should be used when changing
676 parameters that affect output.
678 the change occurs after all output written to the object referred by
680 has been transmitted, and all input that has been received but not read
681 will be discarded before the change is made.
682 .SS Canonical and noncanonical mode
687 determines whether the terminal is operating in canonical mode
699 Input is made available line by line.
700 An input line is available when one of the line delimiters
701 is typed (NL, EOL, EOL2; or EOF at the start of line).
702 Except in the case of EOF, the line delimiter is included
703 in the buffer returned by
706 Line editing is enabled (ERASE, KILL;
709 flag is set: WERASE, REPRINT, LNEXT).
712 returns at most one line of input; if the
714 requested fewer bytes than are available in the current line of input,
715 then only as many bytes as requested are read,
716 and the remaining characters will be available for a future
719 In noncanonical mode input is available immediately (without
720 the user having to type a line-delimiter character),
721 no input processing is performed,
722 and line editing is disabled.
727 determine the circumstances in which a
729 completes; there are four distinct cases:
731 MIN == 0, TIME == 0 (polling read)
732 If data is available,
734 returns immediately, with the lesser of the number of bytes
735 available, or the number of bytes requested.
736 If no data is available,
740 MIN > 0, TIME == 0 (blocking read)
742 blocks until MIN bytes are available,
743 and returns up to the number of bytes requested.
745 MIN == 0, TIME > 0 (read with timeout)
746 TIME specifies the limit for a timer in tenths of a second.
747 The timer is started when
751 returns either when at least one byte of data is available,
752 or when the timer expires.
753 If the timer expires without any input becoming available,
756 If data is already available at the time of the call to
758 the call behaves as though the data was received immediately after the call.
760 MIN > 0, TIME > 0 (read with interbyte timeout)
761 TIME specifies the limit for a timer in tenths of a second.
762 Once an initial byte of input becomes available,
763 the timer is restarted after each further byte is received.
765 returns when any of the following conditions is met:
768 MIN bytes have been received.
770 The interbyte timer expires.
772 The number of bytes requested by
775 (POSIX does not specify this termination condition,
776 and on some other implementations
779 does not return in this case.)
782 Because the timer is started only after the initial byte
783 becomes available, at least one byte will be read.
784 If data is already available at the time of the call to
786 the call behaves as though the data was received immediately after the call.
789 .\" POSIX.1-2008 XBD 11.1.7
790 does not specify whether the setting of the
792 file status flag takes precedence over the MIN and TIME settings.
797 in noncanonical mode may return immediately,
798 regardless of the setting of MIN or TIME.
799 Furthermore, if no data is available,
802 in noncanonical mode to return either 0, or \-1 with
809 sets the terminal to something like the
810 "raw" mode of the old Version 7 terminal driver:
811 input is available character by character,
812 echoing is disabled, and all special processing of
813 terminal input and output characters is disabled.
814 The terminal attributes are set as follows:
817 termios_p\->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
818 | INLCR | IGNCR | ICRNL | IXON);
819 termios_p\->c_oflag &= ~OPOST;
820 termios_p\->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
821 termios_p\->c_cflag &= ~(CSIZE | PARENB);
822 termios_p\->c_cflag |= CS8;
827 transmits a continuous stream of zero-valued bits for a specific
828 duration, if the terminal is using asynchronous serial data
830 If \fIduration\fP is zero, it transmits zero-valued bits
831 for at least 0.25 seconds, and not more that 0.5 seconds.
832 If \fIduration\fP is not zero, it sends zero-valued bits for some
833 implementation-defined length of time.
835 If the terminal is not using asynchronous serial data transmission,
837 returns without taking any action.
840 waits until all output written to the object referred to by
842 has been transmitted.
845 discards data written to the object referred to by
847 but not transmitted, or data received but not read, depending on the
851 flushes data received but not read.
853 flushes data written but not transmitted.
855 flushes both data received but not read, and data written but not
859 suspends transmission or reception of data on the object referred to by
861 depending on the value of
866 restarts suspended output.
868 transmits a STOP character, which stops the terminal device from
869 transmitting data to the system.
871 transmits a START character, which starts the terminal device
872 transmitting data to the system.
874 The default on open of a terminal file is that neither its input nor its
877 The baud rate functions are provided for getting and setting the values
878 of the input and output baud rates in the \fItermios\fP structure.
879 The new values do not take effect
882 is successfully called.
884 Setting the speed to \fBB0\fP instructs the modem to "hang up".
885 The actual bit rate corresponding to \fBB38400\fP may be altered with
888 The input and output baud rates are stored in the \fItermios\fP
892 returns the output baud rate stored in the \fItermios\fP structure
897 sets the output baud rate stored in the \fItermios\fP structure pointed
898 to by \fItermios_p\fP to \fIspeed\fP, which must be one of these constants:
924 The zero baud rate, \fBB0\fP,
925 is used to terminate the connection.
926 If B0 is specified, the modem control lines shall no longer be asserted.
927 Normally, this will disconnect the line.
928 \fBCBAUDEX\fP is a mask
929 for the speeds beyond those defined in POSIX.1 (57600 and above).
930 Thus, \fBB57600\fP & \fBCBAUDEX\fP is nonzero.
933 returns the input baud rate stored in the \fItermios\fP structure.
936 sets the input baud rate stored in the \fItermios\fP structure to
938 which must be specified as one of the \fBBnnn\fP constants listed above for
940 If the input baud rate is set to zero, the input baud rate will be
941 equal to the output baud rate.
944 is a 4.4BSD extension.
945 It takes the same arguments as
947 and sets both input and output speed.
951 returns the input baud rate stored in the
956 returns the output baud rate stored in the \fItermios\fP structure.
958 All other functions return:
964 to indicate the error.
968 returns success if \fIany\fP of the requested changes could be
969 successfully carried out.
970 Therefore, when making multiple changes
971 it may be necessary to follow this call with a further call to
973 to check that all changes have been performed successfully.
975 .SS Multithreading (see pthreads(7))
990 functions are thread-safe.
1003 are specified in POSIX.1-2001.
1008 are nonstandard, but available on the BSDs.
1010 UNIX\ V7 and several later systems have a list of baud rates
1011 where after the fourteen values B0, ..., B9600 one finds the
1012 two constants EXTA, EXTB ("External A" and "External B").
1013 Many systems extend the list with much higher baud rates.
1015 The effect of a nonzero \fIduration\fP with
1018 SunOS specifies a break of
1020 seconds, where \fIN\fP is at least 0.25, and not more than 0.5.
1021 Linux, AIX, DU, Tru64 send a break of
1024 FreeBSD and NetBSD and HP-UX and MacOS ignore the value of
1026 Under Solaris and UnixWare,
1032 .\" libc4 until 4.7.5, glibc for sysv: EINVAL for duration > 0.
1033 .\" libc4.7.6, libc5, glibc for unix: duration in ms.
1034 .\" glibc for bsd: duration in us
1035 .\" glibc for sunos4: ignore duration
1038 .BR console_ioctl (4),