Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1134146
  • 博文数量: 141
  • 博客积分: 2853
  • 博客等级: 少校
  • 技术积分: 2266
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-04 12:03
文章分类

全部博文(141)

文章存档

2014年(3)

2013年(12)

2012年(126)

分类: LINUX

2012-04-18 21:57:12

为了便于通过程序来获得和修改终端参数,Linux提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。

表1 tcgetattr函数和tcsetattr函数

头文件

函数形式

int tcgetattr(int fd, struct termios *termios_p);

int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);

返回值

成功

失败

是否设置errno

0

1

 

 

说明:tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中,该结构体一般包括如下的成员:

tcflag_t c_iflag;      
tcflag_t c_oflag;      
tcflag_t c_cflag;      
tcflag_t c_lflag;     
cc_t     c_cc[NCCS];

 

其具体意义如下。
c_iflag:输入模式标志,控制终端输入方式。

c_oflag:输出模式标志,控制终端输出方式。

c_cflag:控制模式标志,指定终端硬件控制信息。

c_lflag:本地模式标志,控制终端编辑功能。

c_cc[NCCS]:控制字符,用于保存终端驱动程序中的特殊字符,如输入结束符等。

 

tcsetattr函数用于设置终端的相关参数。参数fd为打开的终端文件描述符,参数optional_actions用于控制修改起作用的时间,而结构体termios_p中保存了要修改的参数。
optional_actions可以取如下的值。
 
TCSANOW:不等数据传输完毕就立即改变属性。
TCSADRAIN:等待所有数据传输结束才改变属性。
TCSAFLUSH:清空输入输出缓冲区才改变属性。

错误信息:
EBADF:非法的文件描述符。
EINTR:tcsetattr函数调用被信号中断。
EINVAL:参数optional_actions使用了非法值,或参数termios中使用了非法值。
ENCTTY:非终端的文件描述符。

阅读(855) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~