struct termios结构体

本文详细介绍了termios结构体在非同步通信端口控制中的作用,包括输入模式、输出模式、控制模式和本地模式等成员的含义和作用。还讨论了如何通过tcgetattr()函数获取终端的配置,并列举了各模式标志常量如IGNBRK、BRKINT等的功能。此外,还展示了tty_std_termios的默认设置,用于初始化线路设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据成员

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;函数可以从后台进程中调用;但是,终端属性可能被后来的前台进程所改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值