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立刻返回,不用按下回车键的更多相关文章

  1. springmvc+ztree v3实现类似表单回显功能

    在做权限管理系统时,可能会用到插件zTree v3,这是一个功能丰富强大的前端插件,应用很广泛,如异步加载菜单制作.下拉选择.权限分配等.在集成SpringMVC中,我分别实现了zTree的添删改查, ...

  2. activiti官网实例项目activiti-explorer之扩展多选框回显功能

    相关参考链接:https://blog.csdn.net/murongxuesheng/article/details/76147380 回显:确认选中属性ng-model,循环属性ng-repeat ...

  3. HTML、jsp页面中radio,checkbox,select数据回显功能,默认被选中问题

    最近常常遇到各种复选框.单选框.下拉框的默认被选中的问题,开始也是绞尽脑汁的想办法,今天写一篇学习总结的博文来写一下学习总结. 单选框(radio)默认被选中: 一.jstl技术进行回显 <in ...

  4. <select>改造成<s:select>实现表单的回显功能

    初始: <select name="viewType"> <option value="0">全部主题</option> & ...

  5. js实现上传图片回显功能

    用到h5技术 <img id="headimg" src="<%=path%>/resources/images/icon4.png" sty ...

  6. boost::asio之(一)简单客户端服务器回显功能

    客户端: // BoostDev.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #inc ...

  7. springmvc 数据回显功能

    按下 修改数据之后 修改功能实现-转向修改页面 2)控制层实现准备数据,并转向修改页面 ~ PersonController.java package cn.itcast.springmvc.cont ...

  8. 普通的checkbox的回显功能

     var ypxt=document.getElementsByName("map.LCSYLB");           var jgjg='${map.LCSYLB}';    ...

  9. Linux串口编程のtermios 结构

    termios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小 组函数调用,你就可以对终端接口进行控制. 可以被调整来 ...

随机推荐

  1. 匹配 prev 元素之后的所有 siblings 元素

    描述: 找到所有与表单同辈的 input 元素 HTML 代码: <form> <label>Name:</label> <input name=" ...

  2. eclipse内置tomcat启动方法

    tomcat:run -Dmaven.tomcat.port=

  3. Linux之Ganglia源码安装

    一.Ganglia简介: Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点.Ganglia的核心包含gmond.gmetad以及一个Web前端.主要是用来监 ...

  4. JavaEE基础(十六)/集合

    1.集合框架(去除ArrayList中重复字符串元素方式) A:案例演示 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 思路:创建新集合方式 /** * A:案例演示 * 需求 ...

  5. ACM题目————小A的计算器

    Description 以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示.  现在小A要在这个操作系统上实现一个计算器,这 ...

  6. [转]在iOS项目中使用CorePlot框架

    转载地址:http://blog.csdn.net/llfjfz/article/details/7849190#comments Core Plot是OS X和IOS下的一个开源图形库,它提供数据的 ...

  7. javaScript判断鼠标滚轮的上下滚动

    分享一个js实现判断鼠标滚轮的上下滚动: <script type="text/javascript"> var scrollFunc = function (e) { ...

  8. 20151221001 GridView 模板

    <asp:GridView ID="GridView1"                 runat="server" AllowPaging=" ...

  9. c++map的用法 分类: POJ 2015-06-19 18:36 11人阅读 评论(0) 收藏

    c++map的用法 分类: 资料 2012-11-14 21:26 10573人阅读 评论(0) 收藏 举报 最全的c++map的用法 此文是复制来的0.0 1. map最基本的构造函数: map&l ...

  10. vsftp 用无法登陆的用户名登陆(也叫虚拟用户)并进入到自己的文件夹test

    1.不需要使用到PAM认证也可以,useradd redhat; usermod -s /sbin/nologin redhat; passwd redhat. 2.userlist_deny=NO; ...