获得和设置终端属性使用函数tcgetattrtcsetattr可以获得或设置termios。这样也就可以检测和修改各种终端选择标志和特殊字符,以使终端按我们所希望的方式进行操作。


#include <termios.h>

int tcgetattr(int filedes, struct termios *termptr);

int tcsetattr(int filedes, int opt, const struct termios *termptr);

</termios.h>

两个函数返回:若成功则为0,若出错则为-1。

这两个函数都有一个指向termios结构的指针作为其参数,它们返回当前终端的属性,或者设置该终端的属性。因为这两个函数只对终端设备进行操作,所以若filedes并不引用一个终端设备则出错返回,errno设置为ENOTTY

tcsetattr的参数opt使我们可以指定在什么时候新的终端属性才起作用。opt可以指定为下列常数中的一个:

  • TCSANOW 更改立即发生。

  • TCSADRAIN 发送了所有输出后更改才发生。若更改输出参数则应使用此选择项。

  • TCSAFLUSH 发送了所有输出后更改才发生。更进一步,在更改发生时未读的所有输入数据都被删除(刷清)。

tcsetattr函数的返回值易于产生混淆。如果它执行了任意一种所要求的动作,即使未能执行所有要求的动作,它也返回0(表示成功)。如果该函数返回0,则我们有责任检查该函数是否执行了所有要求的动作。这就意味着,在调用tcsetattr设置所希望的属性后,需调用tcgetattr,然后将实际终端属性与所希望的属性相比较,以检测两者是否有区别。

POSIX串口编程文档提供了详细的POSIX串口编程指南和实例,帮助理解如何使用这些函数。

8653终端使用说明详细介绍了终端设备的使用和配置,进一步丰富了对终端属性管理的认识。

使用tcgetattr函数与tcsetattr函数控制终端doc是一本专门针对这两个函数的文档,内容详实,便于深入学习。

VC使用API函数进行串口编程说明中提供了大量代码示例,便于实践操作。

终端选择标志-鸿鹄论坛_华为认证h35-211-hcnp-access network题库