一、数据成员
termios函数簇提供了一个常规的终端接口,用于控制非同步通信端口。这个结构包含了至少下列成员:
tcflag_t c_iflag;//输入模式
tcflag_t c_oflag;//输出模式
tcflag_t c_cflag;//控制模式
tcflag_t c_lflag;//本地模式
cc_t c_cc[NCSS]; //控制字符
struct termios
{
unsigned short c_iflag;//输入模式标志
unsigned short c_oflag;//输出模式标志
unsigned short c_cflag;//控制模式标志
unsigned short c_lflag;//区域模式标志或本地模式标志或局部模式
unsigned char c_line;//行控制line discipline
unsigned char c_cc[NCC];//控制字符特性
};
二、作用
这个变量被用来提供一个健全的线路设置集合。如果这个端口在被用户初始化前使用,驱动初始化这个变量使用使用一个标准的数值集,它拷贝自tty_std_termios变量。tty_std_termios在tty核心被定义为:
struct termios tty_std_termios={
.c_iflag=ICRNL | IXON,
.c_oflag=OPOST | ONLCR,
.c_cflag=B38400 | CS8 |CREAD | HUPCL,
.c_lflag=ISIG | ICANON | ECHO | ECHOE | ECHOK | ECHOCTL | ECHOKE | IECTEN,
.c_cc=INIT_C_CC
};
这个struct termios 结构用来持有所有的当前线路设置,给这个ty设备的一个特定端口。这些线路设置控制当前波特率,数据大小,数据流控设置,以及许多其他的值。
三、成员的值
(一)c_iflag标志常量:input mode(输入模式)
input mode 可以在输入值传给程序之前控制其处理的方式。其中输入值可能是由序列埠或键盘的终端驱动程序所接受到的字元。我们可以利用termios结构的c_iflag的标志来加以控制,其定义的方式皆以OR来加以组合。
IGNBRK:忽略输入中的BREAK状态。(忽略命令行中的中断)
BRKINT:(命令行出现中断时,可产生一插断)如果设置了IGNBRK,将忽略BREAK,如果没有设置,但是设置了BRKINT,那么BREAK将使得输入和输出队列被刷新,如果终端是一个前台进程组的控制终端,这个进程组中所有的进程将收到SIGINT信号。如果既未设置IGNBRK也未设置BRKINT,BREAK将视为与NUL字符同义,除非设置了PARMRK,这种情况下它被视为序列377
......
(四)与此结构体相关的函数
(一)tcgetattr()函数
1.原型:int tcgetattr(int fd,struct termios & termios_p);
2.功能:取得终端介质(fd)的初始值,并把其值赋给termios_p;函数可以从后台进程中调用;但是,终端属性可能被后来的前台进程所改变。