标签:函数 文件的 执行 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