zoukankan      html  css  js  c++  java
  • 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 ");

        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;

    }

    注意,在程序关闭结束之前,要恢复终端的原始设置。

     ----------------------------------------------------------------------

    在非标准模式下,默认的回车和换行符之间的映射已经不存在了。' ' 回车  ' ' 换行。

    ----------------------------------------------------------------------

    当用户按下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;

  • 相关阅读:
    CSS3弹性盒布局方式
    Vue知识点(面试常见点)
    h5新增加的存储方法
    前端常用插件
    Git 及 GitHub 使用
    Express 框架
    angular.js 教程 -- 实例讲解
    Windows右键添加VSCode启动
    Windows平台SSH登录Linux并使用图形化界面
    10_Linux yum命令
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/5337981.html
Copyright © 2011-2022 走看看