红联Linux门户
Linux帮助

Linux使用static关键字保存和恢复程序运行状态

发布时间:2014-12-12 09:45:53来源:linux网站作者:joker0910

做了一个控制Linux终端状态的实验,程序运行过程中,终端需要调整到 nobuffer、noecho。即,无缓冲,无回显状态。并且一次仅能接受一个字符的输入。


实现如下:


int set_cr_noecho_mode() 

struct  termios  ttystate; 
tcgetattr(0, &ttystate);   // read current setting  
ttystate.c_lflag&= ~ICANON;   //no buffering  
ttystate.c_lflag&= ~ECHO;//no echo
ttystate.c_cc[VMIN]   =   1;   //  get 1 char at a time  
tcsetattr(0, TCSANOW,  &ttystate);  // install setting  
}


为了在这些设置使用过后,能恢复终端在次之前的状态,必须对其状态进行保存,使用一个static变量就可以轻松解决!这个方法,同样适用于很多临时改变状态,并且需要恢复的情况。


</pre><pre name="code" class="html">int tty_mode(int how) 

static struct termios original_mode; 
static int original_flags; 
  
if(how == 0) 

//save  
tcgetaddr(0, &original_mode);
original_flags = fcntl(0, F_GETFL); 
 } 
else 

//restore  
tcsetattr(0, TCSANOW, &original_mode); 
fcntl(0, F_SETFL, original_flags); 

}