1. 结构体定义
该结构体定义在头文件 <termios.h> 中,至少包含以下成员:
|
|
2. 结构体成员注解
2.1. 输入模式标志 c_iflag
c_iflag 用于设置终端 I/O 的输入参数,标志宏定义如下:
-
IGNBRK
忽略输入时的中断(BREAK)条件 -
BRKINT
- 如果设置了
IGNBRK,则忽略中断; - 如果没有设置
IGNBRK,但设置了BRKINT,那么中断(BREAK)会导致输入输出队列被冲洗(flush);如果终端是前台进程组,中断(BREAK)将会向该终端发送SIGINT信号; - 如果
IGNBRK和BRKINT都未设置,中断(BREAK)字符将被读取为空字节(’\0’);如果设置了PARMAR标志,那么它将被读取为序列\377 \0 \0。
- 如果设置了
-
IGNPAR
忽略帧错误和校验错误 -
PARMRK
(待补充) -
INPCK
使能输入奇偶校验 -
ISTRIP
有效输入字节被剥离为 7 位 -
INLCR
将输入的NL转换为CR -
IGNCR
忽略输入时的CR -
ICRNL
将输入的CR转换为NL(除非设置了IGNCR) -
IUCLC
(不属于 POSIX)在输入时将大写字符转换成小写 -
IXON
在输出上使能 XON/XOFF 流控制 -
IXANY
输入任何字符都将重启停止的输出 -
IXOFF 在输入上使能 XON/XOFF 流控制
-
IMAXBEL
(不属于 POSIX)输入队列已满时响铃;Linux 没有实现该标志位 -
IUTF8
(不属于 POSIX)输入为 UTF8 字符
2.2. 输出模式标志 c_oflag
c_oflag 用于设置终端 I/O 的输出参数,标志宏定义如下:
-
OPOST
使能实现定义(implementation-defined)的输出处理(?) -
OLCUC
(不属于 POSIX)在输出时将大写字符转换成小写 -
ONLCR
在输出时将 NL 转换成CR-NL -
OCRNL
在输出时将 CR 转换成NL -
ONOCR
不在第 0 列输出CR -
ONLRET
不输出CR -
OFILL
以发送填充字符代替使用定时进行延时 -
OFDEL
填充字符设为ASCII DEL(0177),如果未设置,则为ASCII NULL(’\0’);Linux 没有实现该标志位 -
NLDLY
(待补充) -
CRDLY
(待补充) -
TABDLY
(待补充) -
BSDLY
(待补充) -
VTDLY
(待补充) -
FFDLY
(待补充)
2.3. 控制模式标志 c_cflag
c_cflag 用于设置终端 I/O 的控制参数,标志宏定义如下:
-
CBAUD
(不属于 POSIX)波特率掩码( 4 + 1 位)。[要求_BSD_SOURCE或_SVID_SOURCE] -
CBAUDEX
(不属于 POSIX)额外的波特率掩码( 1 位),包含在CBAUD中。 [要求_BSD_SOURCE或_SVID_SOURCE] -
CSIZE
字符大小掩码,值为CS5、CS6、CS7或CS8 -
CSTOPB
将停止位设为 2 位,如果未设置,则为 1 位 -
CREAD
启用接收器 -
PARENB 使能对输出的奇偶校验生成和对输入的奇偶校验检查
-
PARODD
使能奇校验,如果未设置,则为偶校验 -
HUPCL
(待补充) -
CLOCAL
忽略解制解调器状态行 -
LOBLK
(待补充) -
CIBAUD
(不属于 POSIX)输入波特率掩码 -
CMSPAR
(不属于 POSIX)(待补充) -
CRTSCTS
(不属于 POSIX)启用硬件 RTS/CTS 流控制
2.4. 本地模式标志 c_lflag
c_lflag 用于设置终端 I/O 的本地参数,标志宏定义如下:
-
ISIG
当接收到INTR、QUIT、SUSP或DSUSP字符时,产生相应的信号 -
ICANON
使能规范模式 -
XCASE
(不属于 POSIX)(待补充) -
ECHO
使能回显 -
ECHOE
如果设置了ICANON,则ERASE字符将可视地擦除字符 -
ECHOK
如果设置了ICANON,则KILL字符将可视地擦除当前行 -
ECHONL
如果设置了ICANON,则回显NL字符(ECHO是否设置都有效 ) -
ECHOCTL
(不属于 POSIX)如果设置了ECHO,则除TAB、NL、START和STOP外的特殊终端字符,都回显为^X,例如 0x08 (BS) 将回显为^H -
ECHOPRT
如果设置了ICANON和ECHO,则 ERASE 字符使所有正被擦除的字符按它们被擦除的方式打印 -
ECHOKE
如果设置了ICANON,则按照ECHOE和ECHOPRT指定的方式来回显行中的每个字符 -
DEFECHO
(不属于 POSIX)仅在进程正在读取时回显;Linux 没有实现该标志位 -
FLUSHO
(不属于 POSIX)(待补充) -
NOFLSH
(不属于 POSIX)(待补充) -
TOSTOP
(待补充) -
PENDIN
(不属于 POSIX)(待补充) -
IEXTEN
(不属于 POSIX)(待补充)
2.5. 终端特殊字符定义数组 c_cc
- VDISCARD
- VDSUSP
- VEOF
- VEOL
- VEOL2
- VERASE
- VINTR
- VKILL
- VLNEXT
- VMIN
- VQUIT
- VPEPRINT
- VSTART
- VSTATUS
- VSTOP
- VSUSP
- VSWTCH
- VTIME
- VMERASE