termios(3) Library Functions Manual termios(3) termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed - (libc -lc) #include #include int tcgetattr(int fd, struct termios *termios_p); int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); int tcsendbreak(int fd, int duration); int tcdrain(int fd); int tcflush(int fd, int queue_selector); int tcflow(int fd, int action); void cfmakeraw(struct termios *termios_p); speed_t cfgetispeed(const struct termios *termios_p); speed_t cfgetospeed(const struct termios *termios_p); int cfsetispeed(struct termios *termios_p, speed_t speed); int cfsetospeed(struct termios *termios_p, speed_t speed); int cfsetspeed(struct termios *termios_p, speed_t speed); glibc ( feature_test_macros(7)): cfsetspeed(), cfmakeraw(): glibc 2.19: _DEFAULT_SOURCE glibc 2.19 : _BSD_SOURCE termios . termios termios_p termios. : tcflag_t c_iflag; /* */ tcflag_t c_oflag; /* */ tcflag_t c_cflag; /* */ tcflag_t c_lflag; /* */ cc_t c_cc[NCCS]; /* */ . ( feature_test_macros(7)) ("[]"). " POSIX" POSIX.1-2001 "XSI" POSIX.1-2001 XSI. c_iflag: IGNBRK BREAK . BRKINT IGNBRK BREAK. BRKINT BREAK SIGINT . IGNBRK BRKINT BREAK ('\0') PARMRK \377 \0 \0. IGNPAR . PARMRK . INPCK IGNPAR. \377 \0. . \377 ISTRIP ( ) . \377 \377 \377 . IGNPAR PARMRK \0. INPCK . ISTRIP . INLCR NL CR . IGNCR . ICRNL ( IGNCR). IUCLC ( POSIX) . IXON XON/XOFF . IXANY (XSI) . ( START .) IXOFF XON/XOFF . IMAXBEL ( POSIX) . . IUTF8 ( 2.6.4) ( POSIX) UTF8 . c_oflag: OPOST . OLCUC ( POSIX) . ONLCR (XSI) NL CR-NL . OCRNL CR NL . ONOCR CR 0. ONLRET NL 0 NL CR. OFILL . OFDEL ASCII DEL (0177). ASCII NUL ('\0'). ( .) NLDLY . NL0 NL1. [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] CRDLY . CR0 CR1 CR2 CR3. [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] TABDLY . TAB0 TAB1 TAB2 TAB3 ( XTABS BUGS). TAB3 XTABS ( ). [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] BSDLY . BS0 BS1. ( .) [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] VTDLY . VT0 VT1. FFDLY . FF0 FF1. [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] c_cflag: CBAUD ( POSIX) (4+1 ). [ _BSD_SOURCE _SVID_SOURCE] CBAUDEX ( POSIX) (1 ) CBAUD. [ _BSD_SOURCE _SVID_SOURCE] ( POSIX termios cfgetispeed() cfsetispeed() . CBAUD c_cflag sg_ispeed sg_ospeed.) CSIZE . CS5 CS6 CS7 CS8. CSTOPB . CREAD . PARENB . PARODD . HUPCL ( ). CLOCAL . LOBLK ( POSIX) . shl ( ). ( Linux.) CIBAUD ( POSIX) . CIBAUD CBAUD IBSHIFT . [ _BSD_SOURCE _SVID_SOURCE] ( glibc Linux ioctls TCGET* TCSET* ioctl_tty(2)) CMSPAR ( POSIX) "" (/) ( ): PARODD 1 PARODD 0. [ _BSD_SOURCE _SVID_SOURCE] CRTSCTS ( POSIX) RTS/CTS (). [ _BSD_SOURCE _SVID_SOURCE] c_lflag: ISIG INTR QUIT SUSP DSUSP . ICANON ( ). XCASE ( POSIX Linux) ICANON . \. \ . [ _BSD_SOURCE _SVID_SOURCE _XOPEN_SOURCE] ECHO . ECHOE ICANON ERASE WERASE . ECHOK ICANON KILL . ECHONL ICANON NL ECHO. ECHOCTL ( POSIX) ECHO TAB NL START STOP ^X X ASCII 0x40 . 0x08 (BS) ^H. [ _BSD_SOURCE _SVID_SOURCE] ECHOPRT ( POSIX) ICANON ECHO . [ _BSD_SOURCE _SVID_SOURCE] ECHOKE ( POSIX) ICANON KILL ECHOE ECHOPRT. [ _BSD_SOURCE _SVID_SOURCE] DEFECHO ( POSIX) . ( Linux.) FLUSHO ( POSIX Linux) . DISCARD. [ _BSD_SOURCE _SVID_SOURCE] NOFLSH INT QUIT SUSP. TOSTOP SIGTTOU . PENDIN ( POSIX Linux) . ( bash(1) .) [ _BSD_SOURCE _SVID_SOURCE] IEXTEN . ICANON EOL2 LNEXT REPRINT WERASE IUCLC. c_cc . ( ) : VDISCARD ( POSIX Linux 017 SI Ctrl-O) : / . IEXTEN . VDSUSP ( POSIX 031 EM Ctrl-Y) (DSUSP): SIGTSTP . IEXTEN ISIG . VEOF (004 EOT Ctrl-D) (EOF). : tty . read(2) 0 . ICANON . VEOL (0 NUL) (EOL). ICANON. VEOL2 ( POSIX 0 NUL) (EOL2). ICANON. VERASE (0177 DEL rubout 010 BS Ctrl-H #) (ERASE). EOF . ICANON . VINTR (003 ETX Ctrl-C 0177 DEL rubout) (INTR). SIGINT. ISIG . VKILL (025 NAK Ctrl-U Ctrl-X @) (KILL). EOF . ICANON . VLNEXT ( POSIX 026 SYN Ctrl-V) (LNEXT). . IEXTEN . VMIN (MIN). VQUIT (034 FS Ctrl-\) (QUIT). SIGQUIT. ISIG . VREPRINT ( POSIX 022 DC2 Ctrl-R) (REPRINT). ICANON IEXTEN . VSTART (021 DC1 Ctrl-Q) (START). . IXON . VSTATUS ( POSIX : 024 DC4 Ctrl-T). (STATUS). . SIGINFO ( ) . VSTOP (023 DC3 Ctrl-S) (STOP). . IXON . VSUSP (032 SUB Ctrl-Z) (SUSP). SIGTSTP. ISIG . VSWTCH ( POSIX 0 NUL) (SWTCH). System V . VTIME (TIME). VWERASE ( POSIX 027 ETB Ctrl-W) (WERASE). ICANON IEXTEN . c_cc _POSIX_VDISABLE. VTIME VMIN VEOL VEOF . . VMIN VTIME . tcgetattr() fd termios termios_p. . tcsetattr() ( ) termios termios_p. optional_actions : TCSANOW . TCSADRAIN fd. . TCSAFLUSH fd . ICANON c_lflag (ICANON ) (ICANON ). ICANON . : o . (NL EOL EOL2 EOF ). EOF read(2). o (ERASE KILL IEXTEN : WERASE REPRINT LNEXT). read(2). read(2). read(2). . o 4096 ( ) 4096 . 4095 ( ISIG ECHO*) 4095 ( ) . . ( ) . 4095 . MIN (c_cc[VMIN]) TIME (c_cc[VTIME]) read(2) : MIN == 0 TIME == 0 ( ) read(2) . read(2) 0. MIN > 0 TIME == 0 ( ) read(2) MIN . MIN == 0 TIME > 0 ( ) TIME . read(2). read(2) . read(2) 0. read(2) . MIN > 0 TIME > 0 ( ) TIME . . read(2) : o MIN . o . o read(2). ( POSIX read(2) .) . read(2) . POSIX O_NONBLOCK MIN TIME. O_NONBLOCK read(2) MIN TIME. POSIX read(2) 0 -1 errno EAGAIN. cfmakeraw() "" 7: . : 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; tcsendbreak() . duration 0.25 0.5 . duration . tcsendbreak() . tcdrain() fd. tcflush() fd queue_selector: TCIFLUSH . TCOFLUSH . TCIOFLUSH . tcflow() fd action: TCOOFF . TCOON . TCIOFF STOP . TCION START . . termios . tcsetattr() . B0 " ". B38400 setserial(8). termios. cfgetospeed() termios termios_p. cfsetospeed() termios termios_p speed : B0 B50 B75 B110 B134 B150 B200 B300 B600 B1200 B1800 B2400 B4800 B9600 B19200 B38400 B57600 B115200 B230400 B460800 B500000 B576000 B921600 B1000000 B1152000 B1500000 B2000000 SPARC: B76800 B153600 B307200 B614400 SPARC: B2500000 B3000000 B3500000 B4000000 Bnnn . B0 . B0 . . CBAUDEX POSIX.1 (57600 ). B57600 & CBAUDEX . Bnnn ioctl TCSETS2 ioctl_tty(2). cfgetispeed() termios. cfsetispeed() termios speed Bnnn cfsetospeed(). 0 ( B0) . cfsetspeed() 4.4BSD. cfsetispeed() . cfgetispeed() termios. cfgetospeed() termios. : 0 . -1 errno . tcsetattr() . tcgetattr() . attributes(7). +------------+------------------------------------+--------------------+ || | | +------------+------------------------------------+--------------------+ |tcgetattr(),| | MT-Safe | |tcsetattr(),| | | |tcdrain(), | | | |tcflush(), | | | |tcflow(), | | | |tcsendbreak(),| | | |cfmakeraw(),| | | |cfgetispeed(),| | | |cfgetospeed(),| | | |cfsetispeed(),| | | |cfsetospeed(),| | | |cfsetspeed()| | | +------------+------------------------------------+--------------------+ tcgetattr() tcsetattr() tcsendbreak() tcdrain() tcflush() tcflow() cfgetispeed() cfgetospeed() cfsetispeed() cfsetospeed() POSIX.1-2008. cfmakeraw() cfsetspeed() BSD. tcgetattr() tcsetattr() tcsendbreak() tcdrain() tcflush() tcflow() cfgetispeed() cfgetospeed() cfsetispeed() cfsetospeed() POSIX.1-2001. cfmakeraw() cfsetspeed() BSD. UNIX V7 B0 B9600 EXTA EXTB (" A" " B"). . tcsendbreak(). SunOS duration * N N 0.25 0.5. Linux AIX DU Tru64 duration . FreeBSD NetBSD HP-UX MacOS duration. Solaris UnixWare tcsendbreak() tcdrain(). Alpha Linux 4.16 (glibc glibc 2.28) XTABS TAB3 N_TTY ( TABDLY). reset(1) setterm(1) stty(1) tput(1) tset(1) tty(1) ioctl_console(2) ioctl_tty(2) cc_t(3type) speed_t(3type) tcflag_t(3type) setserial(8) 3 . . : . 6.18 8 2026 termios(3)