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