




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要:Linux编程技术详解第6章的主要内容是设备文件,本小节讲的是使用tcgetattr函数与tcsetattr函数控制终端。 标签:tcgetattr函数控制终端Windows系统LinuxUNIX系统Linux编程技术详解 Oracle帮您准确洞察各个物流环节6.4.4 使用tcgetattr函数与tcsetattr函数控制终端为了便于通过程序来获得和修改终端参数,Linux还提供了tcgetattr函数和tcsetattr函数。tcgetattr用于获取终端的相关参数,而tcsetattr函数用于设置终端参数。这两个函数的具体信息如表6.2所示。表6.2 tcgetattr函数和tcsetattr函数头文件函数形式int tcgetattr(int fd, struct termios *termios_p);int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);返回值成功失败是否设置errno0?1是说明:tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中,该结构体一般包括如下的成员: tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_t c_ccNCCS; 其具体意义如下。?c_iflag:输入模式标志,控制终端输入方式,具体参数如表6.3所示。表6.3 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在使用该参数而是认为该参数总是已经设置c_oflag:输出模式标志,控制终端输出方式,具体参数如表6.4所示。表6.4 c_oflag参数键值说明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和CR3TABDLY水平制表符输出延迟,取值范围为:TAB0、TAB1、TAB2和TAB3BSDLY空格输出延迟,可以取BS0或BS1VTDLY垂直制表符输出延迟,可以取VT0或VT1FFDLY换页延迟,可以取FF0或FF1c_cflag:控制模式标志,指定终端硬件控制信息,具体参数如表6.5所示。表6.5 c_oflag参数键值说明CBAUD波特率(4+1位)(非POSIX)CBAUDEX附加波特率(1位)(非POSIX)CSIZE字符长度,取值范围为CS5、CS6、CS7或CS8CSTOPB设置两个停止位CREAD使用接收器PARENB使用奇偶校验PARODD对输入使用奇偶校验,对输出使用偶校验HUPCL关闭设备时挂起CLOCAL忽略调制解调器线路状态CRTSCTS使用RTS/CTS流控制c_lflag:本地模式标志,控制终端编辑功能,具体参数如表6.6所示。表6.6 c_lflag参数键值说明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信号c_ccNCCS:控制字符,用于保存终端驱动程序中的特殊字符,如输入结束符等。c_cc中定义了如表6.7所示的控制字符。表6.7 c_cc支持的控制字符宏说明宏说明VINTRInterrupt字符VEOL附加的End-of-file字符VQUITQuit字符VTIME非规范模式读取时的超时时间VERASEErase字符VSTOPStop字符VKILLKill字符VSTARTStart字符VEOFEnd-of-file字符VSUSPSuspend字符VMIN非规范模式读取时的最小字符数tcsetattr函数用于设置终端的相关参数。参数fd为打开的终端文件描述符,参数optional_actions用于控制修改起作用的时间,而结构体termios_p中保存了要修改的参数。optional_actions可以取如下的值。?TCSANOW:不等数据传输完毕就立即改变属性。TCSADRAIN:等待所有数据传输结束才改变属性。TCSAFLUSH:清空输入输出缓冲区才改变属性。错误信息:EBADF:非法的文件描述符。EINTR:tcsetattr函数调用被信号中断。EINVAL:参数optional_actions使用了非法值,或参数termios中使用了非法值。ENCTTY:非终端的文件描述符。实例演练:程序p6.2.c通过修改终端控制字符,将终端输入结束符由“Ctrl+D”,修改成了“Ctrl+G”。首先,程序调用tcgetattr函数获得标准输入的termios信息,将termios结构体中的c_ccVEOF控制字符的修改成0x07(即Ctrl+G);然后,使用tcsetattr函数将修改后的termios参数设置到终端中。具体代码如下所示: /p6.2.c 修改终端控制字符示例#include #include #include #include int main(void)/term用于存储获得的终端参数信息struct termios term;int err;/获得标准输入的终端参数,将获得的信息保存在term变量中if(tcgetattr(STDIN_FILENO,&term)=-1)perror(Cannot get standard input description);return 1;/修改获得的终端信息的结束控制字符term.c_ccVEOF=(cc_t)0x07;/使用tcsetattr函数将修改后的终端参数设置到标准输入中/err用于保存函数调用后的结果err=tcsetattr(STDIN_FILENO,TCSAFLUSH,&term);/如果err为-1或是出现EINTR错误(函数执行被信号中断),/给出相关出错信息if(err=-1 & err=EINTR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华夏银行常州市金坛区2025秋招半结构化面试题库及参考答案
- 中信银行苏州市张家港市2025秋招笔试价值观测评题专练及答案
- 内蒙辅警笔试题库及答案
- 2025山东新华书店集团有限公司临沂分公司招聘18人笔试参考题库附带答案详解
- 2025届北汽新能源鲸英实习生正式启动实习笔试参考题库附带答案详解
- 农发行鹰潭市月湖区2025秋招结构化面试经典题及参考答案
- 民生银行威海市环翠区2025秋招信息科技岗笔试题及答案
- 强化训练公务员考试《常识》专项测评试题(含答案及解析)
- 2025年中共中山市委统一战线工作部招聘雇员(1人)考前自测高频考点模拟试题及完整答案详解1套
- 四川省南充市南充高级中学2025-2026学年九年级上学期第一次月考语文试题(含答案)
- 2023类器官技术与行业研究报告-复刻结构重现功能 构建组织器官替身
- 国有资产交易法律实务与疑难问题
- 初中毕业证在哪里查询
- 名词语法讲解
- GB/T 5796.4-2022梯形螺纹第4部分:公差
- 小数乘整数教案 省赛一等奖
- 妇产科用药指南
- 智能电网-课件
- 安全文明施工措施费清单五篇
- 《战略的本质》读书分享
- 《城镇燃气室内工程施工与质量验收规范》CJJ94-2009
评论
0/150
提交评论