终端模式

Posted cs0915

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了终端模式相关的知识,希望对你有一定的参考价值。

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);      
}

 

以上是关于终端模式的主要内容,如果未能解决你的问题,请参考以下文章

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

python 用于在终端中运行的sublime text 3的简单代码片段制作工具

python 一个终端代码片段,在mac上生成可启动的usb live CD,以运行类似ubuntu或debian的内容。

用于从 cloudkit 检索单列的代码模式/片段

php 在终端中模拟一点加载字符的片段

尝试使用片段保存夜间模式状态