终端模式

时间:2020-06-06 21:54:06   收藏:0   阅读:96

1.规范模式

只是用户常见的模式,驱动程序输入的字符保存在缓冲区,并且仅在接收到回车键时才将这些缓冲的字符发送到程序。缓冲数据使驱动程序可以删除字符,终止输入。

2.非规范模式

缓冲和编辑功能被关闭时,称为处于非规范模式。用于删除和终止的编辑键没有意义了,数据一输入就发送给程序了。

3.raw模式

每个处理步骤都被一个独立的位控制。如ISIG位控制ctrl-c键是否用于终止一个程序。程序可以随意关闭所有这些处理步骤。当所有处理都关闭的时候,驱动程序将输入直接传递给程序。

 

在linux命令行中可以直接通过stty命令来改变模式

stty - icannon//非规范模式

stty - echo//不回显

stty icannon echo//切回规范模式和回显

 

通过函数来设置

void set_crmode()
{
      struct termiios ttystate;
       tcgetattr(0,&ttrstate);
       ttystate.c_lflag&=~ICANON;//非规范模式,输入立即读取,不用等待回车
       tttystate.c_cc[VMIN]=1;//一次读取一位   
       ttystate.c_lflag&=~ ECHO;//不回显
       tcsetattr(0,TCSANOW,&ttystate);
}
struct termios tty_mode(int how)
{
       static struct termios original_mode;
       if(how==0)//保存原来的属性
           tcgetattr(0,&original_mode);
       else//还原属性
           return tcsetattr(0,TCSANOW,&otiginal_mode);      
}

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!