5.4.1 termios结构,关闭回显功能,一键入字符fgetc立刻返回,不用按下回车键
Linux提供了一组编程接口,用来控制终端驱动程序的行为。这样我们可以更精细的来控制终端。
例如:
回显:允许控制字符的回显,例如读取密码时。
使用termios结构的密码程序
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#define LENGTH 8
char passwd[LENGTH];
int main()
{
struct termios initsettings;
struct termios newsettings;
printf("input your password\n");
tcgetattr(fileno(stdin), &initsettings);
newsettings = initsettings;
newsettings.c_lflag &= ~ECHO;
tcsetattr(fileno(stdin), TCSAFLUSH, &newsettings);
fgets(passwd, LENGTH, stdin);
tcsetattr(fileno(stdin), TCSANOW, &initsettings);
fprintf(stdout, "your passwd is:");
fprintf(stdout, "%s", passwd);
return 0;
}
注意,在程序关闭结束之前,要恢复终端的原始设置。
----------------------------------------------------------------------
在非标准模式下,默认的回车和换行符之间的映射已经不存在了。'\n' 回车 '\r' 换行。
----------------------------------------------------------------------
当用户按下ctrl + c 组合键时,程序将终止。可以在本地模式下清除ISIG标志来禁用这些特殊字符的处理。
newsettings = initsettings;
newsettings.c_lflag &= ~ICANON;//关闭标准输入处理
newsettings.c_lflag &= ~ECHO;//关闭回显功能
//一键入字符,fgetc立刻返回,不用按下回车键,
newsettings.c_cc[VMIN] = 1;
newsettings.c_cc[VTIME] = 0;
//禁用ctrl+c组合键,(按键按下时产生特殊字符?)
newsettings.c_lflag &= ~ISIG;
5.4.1 termios结构,关闭回显功能,一键入字符fgetc立刻返回,不用按下回车键的更多相关文章
- springmvc+ztree v3实现类似表单回显功能
在做权限管理系统时,可能会用到插件zTree v3,这是一个功能丰富强大的前端插件,应用很广泛,如异步加载菜单制作.下拉选择.权限分配等.在集成SpringMVC中,我分别实现了zTree的添删改查, ...
- activiti官网实例项目activiti-explorer之扩展多选框回显功能
相关参考链接:https://blog.csdn.net/murongxuesheng/article/details/76147380 回显:确认选中属性ng-model,循环属性ng-repeat ...
- HTML、jsp页面中radio,checkbox,select数据回显功能,默认被选中问题
最近常常遇到各种复选框.单选框.下拉框的默认被选中的问题,开始也是绞尽脑汁的想办法,今天写一篇学习总结的博文来写一下学习总结. 单选框(radio)默认被选中: 一.jstl技术进行回显 <in ...
- <select>改造成<s:select>实现表单的回显功能
初始: <select name="viewType"> <option value="0">全部主题</option> & ...
- js实现上传图片回显功能
用到h5技术 <img id="headimg" src="<%=path%>/resources/images/icon4.png" sty ...
- boost::asio之(一)简单客户端服务器回显功能
客户端: // BoostDev.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #inc ...
- springmvc 数据回显功能
按下 修改数据之后 修改功能实现-转向修改页面 2)控制层实现准备数据,并转向修改页面 ~ PersonController.java package cn.itcast.springmvc.cont ...
- 普通的checkbox的回显功能
var ypxt=document.getElementsByName("map.LCSYLB"); var jgjg='${map.LCSYLB}'; ...
- Linux串口编程のtermios 结构
termios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小 组函数调用,你就可以对终端接口进行控制. 可以被调整来 ...
随机推荐
- opencv常用数据结构之:IplImage
typedef struct_IplImage{ int nSize; //IplImage大小 int ID; //版本(=0) int nChannels; //大多 ...
- UIPage
分页控件是一种用来取代导航栏的可见指示器,方便手势直接翻页,最典型的应用便是iPhone的主屏幕,当图标过多会自动增加页面,在屏幕底部你会看到原点,用来只是当前页面,并且会随着翻页自动更新. 一.创建 ...
- android 学习随笔十八(广播与服务 )
1.广播接收者注册 清单文件注册(Android四大组件都要在清单文件中注册) 一旦应用部署,广播接收者就生效了,直到用户手动停止应用或者应用被删除 广播接收者可以使用代码注册 需要广播接收者运行时, ...
- db.properties
jdbc.driverclass=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@192.168.201.192:1521:orcl ...
- POI读取/写入Excel文件
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...
- mount源码分析 【转】
转自:http://blog.chinaunix.net/uid-10769062-id-3230811.html Busybox- 在util-linux/mount.c的line:1609行首先映 ...
- kmemleak的使用---内存泄露检测工具【转】
转自:http://blog.csdn.net/lishenglong666/article/details/8287783 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...
- post 405 method not allowed
HTTP 405 错误 – 方法不被允许 (Method not allowed) 介绍 HTTP 协议定义一些方法,以指明为获取客户端(如您的浏览器或我们的 CheckUpDown 机器人)所指定的 ...
- 使用glob()查找文件
大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法:摘自 ...
- java.lang.VerifyError异常
以前遇到过java.lang.VerifyError 原因是jar包冲突 tomcat6自带jsp.jar.servlet.jar所以项目中不用引入 tomcat5不带jsp.jar.servlet. ...