Terminal control structure
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc[NCCS];
uint32_t reserved[3];
speed_t c_ispeed;
speed_t c_ospeed;
};
The termios control structure is defined in
<termios.h>, and contains at least the members described below.
- tcflag_t c_iflag
- Input modes. This member contains at least the following bits:
- BRKINT
- Signal interrupt on break.
- ICRNL
- Map CR to NL on input.
- IGNBRK
- Ignore break conditions.
- IGNCR
- Ignore CR.
- IGNPAR
- Ignore characters with parity errors.
- INLCR
- Map NL to CR on input.
- INPCK
- Enable input parity check.
- ISTRIP
- Strip top bit from character.
- IXOFF
- Enable software input flow control (via START/STOP chars).
- IXON
- Enable software output flow control (via START/STOP chars).
- PARMRK
- Mark parity errors in the input data stream.
- tcflag_t c_oflag
- Output modes. This member contains at least the following bits:
- OPOST
- Perform output processing.
- tcflag_t c_cflag
- Control modes. This member contains at least the following bits:
- CLOCAL
- Ignore modem status lines.
- CREAD
- Enable receiver.
- CSIZE
- Number of data bits per character.
- CS5
- 5 data bits.
- CS6
- 6 data bits.
- CS7
- 7 data bits.
- CS8
- 8 data bits.
- CSTOPB
- Two stop bits, else one.
- HUPCL
- Hang up on last close.
- IHFLOW
- Support input flow control using the hardware handshaking lines.
- OHFLOW
- Support output flow control using the hardware handshaking lines.
- PARENB
- Parity enable.
- PARODD
- Odd parity, else even.
- PARSTK
- Stick parity (mark parity if PARODD is set, else
space parity).
- tcflag_t c_lflag
- Local modes. This member contains at least the following bits:
- ECHO
- Enable echo.
- ECHOE
- Echo ERASE as destructive backspace.
- ECHOK
- Echo KILL as a line erase.
- ECHONL
- Echo '\n', even if ECHO is off.
- ICANON
- Canonical input mode (line editing enabled).
- IEXTEN
- QNX extensions to POSIX are enabled.
- ISIG
- Enable signals.
- NOFLSH
- Disable flush after interrupt, quit, or suspend.
- TOSTOP
- Send SIGTTOU for background output.
- cc_t c_cc[NCCS]
- Control characters.
The array c_cc includes at least the following control
characters:
- c_cc[VEOF]
- EOF character.
- c_cc[VEOL]
- EOL character.
- c_cc[VERASE]
- ERASE character.
- c_cc[VFWD]
- FORWARD character.
- c_cc[VINTR]
- INTR character.
- c_cc[VKILL]
- KILL character.
- c_cc[VMIN]
- MIN value.
- c_cc[VQUIT]
- QUIT character.
- c_cc[VSUSP]
- SUSP character.
- c_cc[VTIME]
- TIME value.
- c_cc[VSTART]
- START character.
- c_cc[VSTOP]
- STOP character.
The following control characters are also defined, but are only acted
on if they're immediately preceded by the nonzero characters
in c_cc[VPREFIX][4], and are immediately
followed by
the nonzero characters in c_cc[VSUFFIX][4]
and the IEXTEN bit of c_lflag is set:
- c_cc[VLEFT]
- Left cursor motion.
- c_cc[VRIGHT]
- Right cursor motion.
- c_cc[VUP]
- Up cursor motion.
- c_cc[VDOWN]
- Down cursor motion.
- c_cc[VINS]
- Insert character.
- c_cc[VDEL]
- Delete character.
- c_cc[VRUB]
- Rubout character.
- c_cc[VCAN]
- Cancel character.
- c_cc[VHOME]
- Home character.
- c_cc[VEND]
- End character.
Any of the control characters in the c_cc array can be
disabled by setting that character to the _PC_VDISABLE
parameter which is returned by
fpathconf() (typically a
zero).
- speed_t c_ispeed
- Input baud rate. This member should be queried and set with the
cfgetispeed() and
cfsetispeed() functions.
- speed_t c_ospeed
- Output baud rate. This member should be queried and set with the
cfgetospeed() and
cfsetospeed() functions.
POSIX 1003.1
cfgetispeed(),
cfgetospeed(),
cfsetispeed(),
cfsetospeed(),
cfmakeraw(),
fpathconf(),
forkpty(),
openpty(),
pathconf(),
readcond(),
tcgetattr(),
tcsetattr()