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类型的数据结构中的值和使用一小 组函数调用,你就可以对终端接口进行控制. 可以被调整来 ...
随机推荐
- android 项目学习随笔十七(ListView、GridView显示组图)
ListView.GridView显示组图,处理机制相同 <?xml version="1.0" encoding="utf-8"?> <Li ...
- android 学习随笔二十九(自定义监听 )
package com.itheima.momo.dialog; import com.itheima.momo.R; import android.app.AlertDialog; import a ...
- 【python cookbook】【字符串与文本】4.文本模式的匹配和查找
问题:按照特定的文本模式进行匹配或查找 解决方法: 1.简单的文字匹配,只需使用str.find().str.startswith().str.endswith()或类似的函数即可: 2.复杂的匹配, ...
- 160913、ionic + 高德地图定位
实例一: var AMapArea=document.getElementById('amap'); AMapArea.parentNode.style.height="100%" ...
- Array JSON
Tool: Online jsonviewer JSON: JavaScript Object Notation. JSON is a syntax for storing and exchangin ...
- ASP开发入门+实战电子书共50本 —下载目录
小弟为大家整理50个ASP电子书籍,有入门,也有实战电子书,做成了一个下载目录,欢迎大家下载. 资源名称 资源地址 ASP.NET开发实战1200例_第I卷 http://down.51cto.com ...
- Linux内存模型
http://blog.csdn.net/sunyubo458/article/details/6090946 了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉 ...
- Windows2003中IIS配置MVC提示HTTP错误 404-文件或目录未找到
Windows2003中IIS提示HTTP错误 404-文件或目录未找到 一.开启服务 启动服务“ASP.NET 状态服务”(ASP.NET State Service ),设置成“自动”. 设置完成 ...
- #在lua中的运用
在lua中"#"表示返回表长度或字符串长度 例子一: a = "Hello " b = "World" print("Concat ...
- discuz安装与学习资料
discuz的安装地址:http://www.discuz.net/thread-3457145-1-1.html 一些学习资料:http://www.discuz.net/forum-10-1.ht ...