一起talk C栗子吧(第一百七十二回:C语言实例--关闭终端中的回显功能三)
来源:互联网 发布:php源码怎么用 编辑:程序博客网 时间:2024/04/29 17:15
各位看官们,大家好,上一回中咱们说的是关闭终端中回显功能的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,我们在前一回中介绍了POSIX标准中的termios类型及其编程接口,这一回中,我们将介绍如何使用这些接口来控制终端,进而实现关闭终端中的回显功能。
大家都知道每个终端都有自己的配置信息,如果我们获取了终端的配置信息,然后依据需要修改配置信息,最后把修改后的信息传递给终端,那么终端中的的配置信息就发生了变化。终端配置信息的变化会影响终端的功能和模式,因此,我们可以通过修改终端的配置信息来控制终端。这么说,大家可能觉得比较抽象,下面我们通过具体的例子来说明如何控制终端,这个例子也是我们今天的主题:关闭终端中的回显功能。
下面是详细的操作步骤,请大家参考:
- 1.使用函数
tcgetattr()
获取终端中的配置信息,并且备份该信息,以便恢复终端最初的配置时使用; - 2.修改步骤1中获取到的终端配置信息,我们修改的是与回显功能相关的配置;
- 3.结合步骤2中修改后的终端配置信息,然后使用函数
tcsetattr()
修改终端中的配置信息; - 4.使用备份的终端配置信息,回复终端最初的配置,这时也会用到函数
tcsetattr()
;
下面是具体的代码,请大家参考:
// 源代码tcgetattr(fd,&init_setting); //get the setting of terminalchange_setting = init_setting; //backup the setting of terminalchange_setting.c_lflag &= ~ECHO; //close ECHO function by change bit of ECHOres = tcsetattr(fd,TCSAFLUSH,&change_setting); //change the setting of terminaltcsetattr(fd,TCSANOW,&init_setting); //revert the setting of terminal
代码中有一个文件描述符fd,我们可以通过fileno()
函数从流中获取流的文件描述符。此外,我们在修改终端配置信息时使用了位操作“与”,通过该操作可以把终端配置信息中的ECHO值删除掉。还有一点需要说明的是,我们在修改终端配置信息时使用了两种修改方式:TCSAFLUSH和TCSANOW
。这两种修改方式在上一回中已经介绍过,大家可以结合上一回的介绍来看代码,这样更加容易理解代码。
看官们,以上是核心代码,完整的代码放到了我的资源中,大家可以点击这里下载使用。
下面是程序的运行结果,请大家参考:
--- ECHO function is open ---please input some charaters helloinput is : hello--- ECHO function is closed ---please input some charaters input is : world //关闭回显功能后看不到输入的内容,该内容是printf()函数输出的
该程序的运行结果和前面章回中程序运行结果完全相同,只是实现结果的方法不同而已。大家可以对比一下这两个程序。此外,关闭终端中的回显功能后,我们看不到屏幕上的内容,只通过文字表达不一定能达到很好的效果,因此建议大家下载该程序,并且自己编译和运行,实实在在体会一下关闭回显功能后的操作。
各位看官,关于关闭终端中的回显功能的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。
- 一起talk C栗子吧(第一百七十二回:C语言实例--关闭终端中的回显功能三)
- 一起talk C栗子吧(第一百七十回:C语言实例--关闭终端中的回显功能一)
- 一起talk C栗子吧(第一百七十一回:C语言实例--关闭终端中的回显功能二)
- 一起talk C栗子吧(第一百七十三回:C语言实例--关闭终端中的缓冲功能一)
- 一起talk C栗子吧(第一百七十四回:C语言实例--关闭终端中的缓冲功能二)
- 一起talk C栗子吧(第一百五十二回:C语言实例--计算机中的大小端)
- 一起talk C栗子吧(第一百九十回:C语言实例--文件定位三 )
- 一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
- 一起talk C栗子吧(第一百六十二回:C语言实例--套接字知识体系图)
- 一起talk C栗子吧(第一百九十二回:C语言实例--DIY less命令一 )
- 一起talk C栗子吧(第一百六十七回:C语言实例--控制终端字符颜色)
- 一起talk C栗子吧(第一百六十五回:C语言实例--C语言中的常量)
- 一起talk C栗子吧(第一百六十八回:C语言实例--C语言中的布尔--bool类型)
- 一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)
- 一起talk C栗子吧(第一百三十七回:C语言实例--查看环境变量)
- 一起talk C栗子吧(第一百四十五回:C语言实例--socket概述)
- 一起talk C栗子吧(第一百四十六回:C语言实例--socket属性)
- 一起talk C栗子吧(第一百五十五回:C语言实例--获取socket通信地址)
- 【leetcode】1. Two Sum
- 素数筛法
- oracle sql 优化
- JavaSE基础-String相关
- 一段项目开发时候用的调试代码 一 --输出特殊信息
- 一起talk C栗子吧(第一百七十二回:C语言实例--关闭终端中的回显功能三)
- 硬币问题
- JDBC连接数据库
- POJ 3176 递推
- Android 性能优化、内存优化(2) 工具使用
- DOS批处理
- 游戏编程模式:命令模式(Part III)
- 大话设计模式-第28章 男人和女人--访问者模式
- C++缺省参数