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. android 项目学习随笔十七(ListView、GridView显示组图)

    ListView.GridView显示组图,处理机制相同 <?xml version="1.0" encoding="utf-8"?> <Li ...

  2. android 学习随笔二十九(自定义监听 )

    package com.itheima.momo.dialog; import com.itheima.momo.R; import android.app.AlertDialog; import a ...

  3. 【python cookbook】【字符串与文本】4.文本模式的匹配和查找

    问题:按照特定的文本模式进行匹配或查找 解决方法: 1.简单的文字匹配,只需使用str.find().str.startswith().str.endswith()或类似的函数即可: 2.复杂的匹配, ...

  4. 160913、ionic + 高德地图定位

    实例一: var AMapArea=document.getElementById('amap'); AMapArea.parentNode.style.height="100%" ...

  5. Array JSON

    Tool: Online jsonviewer JSON: JavaScript Object Notation. JSON is a syntax for storing and exchangin ...

  6. ASP开发入门+实战电子书共50本 —下载目录

    小弟为大家整理50个ASP电子书籍,有入门,也有实战电子书,做成了一个下载目录,欢迎大家下载. 资源名称 资源地址 ASP.NET开发实战1200例_第I卷 http://down.51cto.com ...

  7. Linux内存模型

    http://blog.csdn.net/sunyubo458/article/details/6090946 了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉 ...

  8. Windows2003中IIS配置MVC提示HTTP错误 404-文件或目录未找到

    Windows2003中IIS提示HTTP错误 404-文件或目录未找到 一.开启服务 启动服务“ASP.NET 状态服务”(ASP.NET State Service ),设置成“自动”. 设置完成 ...

  9. #在lua中的运用

    在lua中"#"表示返回表长度或字符串长度 例子一: a = "Hello " b = "World" print("Concat ...

  10. discuz安装与学习资料

    discuz的安装地址:http://www.discuz.net/thread-3457145-1-1.html 一些学习资料:http://www.discuz.net/forum-10-1.ht ...