使用static关键字保存和恢复程序运行状态
2011-09-18 11:55
232 查看
今天做了一个控制Linux终端状态的实验,程序运行过程中,终端需要调整到 nobuffer、noecho。即,无缓冲,无回显状态。并且一次仅能接受一个字符的输入。
实现如下:
为了在这些设置使用过后,能恢复终端在次之前的状态,必须对其状态进行保存,使用一个static变量就可以轻松解决!这个方法,同样适用于很多临时改变状态,并且需要恢复的情况。
实现如下:
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变量就可以轻松解决!这个方法,同样适用于很多临时改变状态,并且需要恢复的情况。
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); } }
相关文章推荐
- QSettings 使用实例 当需要在程序关闭时保存”状态“信息
- 程序的状态保存和恢复
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
- Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复
- Android处理运行时变更保存数据状态恢复Activity
- 从一个C语言源程序文件中,统计出该C程序中使用的关键字及其频率。统计结果表格保存到文件中
- 使用JConsole监控java程序的运行状态总结
- 058:对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常
- saveInstallState参数使用详解(android activity状态保存和恢复)
- 从一个C语言源程序文件中,统计出该C程序中使用的关键字及其频率。统计结果表格保存到文件keyword.txt中。
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- canvas save()和canvas restore()状态的保存和恢复使用方法及实例
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- Android程序:使用系统服务*1.获取网络状态 * 2.打开关闭wifi * 3.获取系统音量 * 4.获取运行程序的包名
- saveInstallState参数使用详解(android activity状态保存和恢复)
- HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- 如何禁止App在后台运行以及如何保存和恢复App的状态
- 使用命名管道在winform程序中输出windows service运行状态
- 使用SharedPreferences来实现判断程序是不是第一次运行和临时保存数据