码迷,mamicode.com
首页 > 其他好文 > 详细

修改终端驱动程序属性

时间:2020-06-06 22:00:12      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:函数   文件的   执行   amp   接收   open   设置   循环   har   

函数原型:

<termios.h> <unistd.h>
int tcgetattr(int fd, struct termios* info)//从与fd有关的终端驱动程序中获取当前设置
int tcsetattr(int fd, int when, struct termios* info)//从info所指的设置复制到fd相关的终端驱动程序
成功返回0,失败返回-1.when:表示什么时候更新驱动程序的设置

when的值:

TCSANOW:现在立即更新

TCSADRAIN

TCSAFLUSH

struct termios settings;
tcgetattr(fd,&settings);
settings.c_flag|=ECHO;//开回显
settings.c_cc[VERASE]=\b;//将退格键作为删除键
tcsetattr(fd,TCSANOW,&settings);


//测试一个位是开还是关
if(settings.c_flag&ECHO);//开了为真
//置位
settings.c_flag|=MASK;
//清除位
settings.c_cflag&=~MASK;

 

非阻塞输入

当使用getchar()或read的时候,进程会阻塞以等待用户的输入,如何关闭输入阻塞?阻塞是任何一个打开的文件的属性,可以通过fcntl或open函数来启动非阻塞输入,非阻塞即是不用等待输入,直接执行后面的程序,如果程序是个循环,当程序再次回到输入的位置时再检测是否有输入了,有则接收,无则执行后面的程序,就像执行普通语句一样,不会在那等待。

struct termios settings;
tcgetattr(fd,&settings);
settings.c_flag|=O_NONBLOCK;//也可以时O_NDELAY
tcsetattr(fd,TCSANOW,&settings);

 

修改终端驱动程序属性

标签:函数   文件的   执行   amp   接收   open   设置   循环   har   

原文地址:https://www.cnblogs.com/cs0915/p/13056358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!