导读:
使用tcgetattr函数与tcsetattr函数控制终端
|
头文件
|
<termios.h>
<unistd.h>
|
||
|
函数形式
|
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);
|
||
|
返回值
|
成功
|
失败
|
是否设置errno
|
|
0
|
−1
|
是
|
|
|
tcflag_t c_iflag; |
|
键 值
|
说 明
|
|
IGNBRK
|
忽略BREAK键输入
|
|
BRKINT
|
如果设置了IGNBRK,BREAK键的输入将被忽略,如果设置了BRKINT ,将产生SIGINT中断
|
|
IGNPAR
|
忽略奇偶校验错误
|
|
PARMRK
|
标识奇偶校验错误
|
|
INPCK
|
允许输入奇偶校验
|
|
ISTRIP
|
去除字符的第8个比特
|
|
INLCR
|
将输入的NL(换行)转换成CR(回车)
|
|
IGNCR
|
忽略输入的回车
|
|
ICRNL
|
将输入的回车转化成换行(如果IGNCR未设置的情况下)
|
|
IUCLC
|
将输入的大写字符转换成小写字符(非POSIX)
|
|
IXON
|
允许输入时对XON/XOFF流进行控制
|
|
IXANY
|
输入任何字符将重启停止的输出
|
|
IXOFF
|
允许输入时对XON/XOFF流进行控制
|
|
IMAXBEL
|
当输入队列满的时候开始响铃,Linux在使用该参数而是认为该参数总是已经设置
|
|
键 值
|
说 明
|
|
OPOST
|
处理后输出
|
|
OLCUC
|
将输入的小写字符转换成大写字符(非POSIX)
|
|
ONLCR
|
将输入的NL(换行)转换成CR(回车)及NL(换行)
|
|
OCRNL
|
将输入的CR(回车)转换成NL(换行)
|
|
ONOCR
|
第一行不输出回车符
|
|
ONLRET
|
不输出回车符
|
|
OFILL
|
发送填充字符以延迟终端输出
|
|
OFDEL
|
以ASCII码的DEL作为填充字符,如果未设置该参数,填充字符将是NUL(‘\0’)(非POSIX)
|
|
NLDLY
|
换行输出延时,可以取NL0(不延迟)或NL1(延迟0.1s)
|
|
CRDLY
|
回车延迟,取值范围为:CR0、CR1、CR2和 CR3
|
|
TABDLY
|
水平制表符输出延迟,取值范围为:TAB0、TAB1、TAB2和TAB3
|
|
BSDLY
|
空格输出延迟,可以取BS0或BS1
|
|
VTDLY
|
垂直制表符输出延迟,可以取VT0或VT1
|
|
FFDLY
|
换页延迟,可以取FF0或FF1
|
|
键 值
|
说 明
|
|
CBAUD
|
波特率(4+1位)(非POSIX)
|
|
CBAUDEX
|
附加波特率(1位)(非POSIX)
|
|
CSIZE
|
字符长度,取值范围为CS5、CS6、CS7或CS8
|
|
CSTOPB
|
设置两个停止位
|
|
CREAD
|
使用接收器
|
|
PARENB
|
使用奇偶校验
|
|
PARODD
|
对输入使用奇偶校验,对输出使用偶校验
|
|
HUPCL
|
关闭设备时挂起
|
|
CLOCAL
|
忽略调制解调器线路状态
|
|
CRTSCTS
|
使用RTS/CTS流控制
|
|
键 值
|
说 明
|
|
ISIG
|
当输入INTR、QUIT、SUSP或DSUSP时,产生相应的信号
|
|
ICANON
|
使用标准输入模式
|
|
XCASE
|
在ICANON和XCASE同时设置的情况下,终端只使用大写。如果只设置了XCASE,则输入字符将被转换为小写字符,除非字符使用了转义字符(非POSIX,且Linux不支持该参数)
|
|
ECHO
|
显示输入字符
|
|
ECHOE
|
如果ICANON同时设置,ERASE将删除输入的字符,WERASE将删除输入的单词
|
|
ECHOK
|
如果ICANON同时设置,KILL将删除当前行
|
|
ECHONL
|
如果ICANON同时设置,即使ECHO没有设置依然显示换行符
|
|
ECHOPRT
|
如果ECHO和ICANON同时设置,将删除打印出的字符(非POSIX)
|
|
TOSTOP
|
向后台输出发送SIGTTOU信号
|