zoukankan      html  css  js  c++  java
  • 10.设备文件

    
    
      1 #include <stdio.h>
      2 #include <unistd.h>
      3 #include <termio.h>
      4 #include <string.h>
      5 
      6 //转小写输入
      7 void TestIoflag()
      8 {
      9     struct termio old,new;
     10     char szBuf[100];
     11     
     12     ioctl(STDIN_FILENO,TCGETA,&old);//获取当前属性
     13     
     14     new = old;//备份属性
     15     
     16     //输入到字符大写转小写
     17     new.c_iflag |= IUCLC;
     18     
     19     ioctl(STDIN_FILENO,TCSETA,&new);//设置到当前属性
     20     
     21     scanf("%s",szBuf);
     22     
     23     printf("szBuf:%s
    ",szBuf);
     24     
     25     ioctl(STDIN_FILENO,TCSETA,&old);//恢复之前的属性
     26     
     27 }
     28 
     29 //转大写输出
     30 void TestOflag()
     31 {
     32         struct termio old,new;
     33         
     34         ioctl(STDOUT_FILENO,TCGETA,&old);
     35         
     36         new = old;
     37         new.c_oflag |= OLCUC;    //set OLCUR bit to 1
     38         ioctl(STDOUT_FILENO,TCSETA,&new);
     39         
     40         printf("Hello,world!
    ");
     41         
     42         ioctl(STDOUT_FILENO,TCSETA,&old);
     43 }
     44 
     45 //无缓冲输出Ascii码
     46 void PrintCharAscii()
     47 {
     48         struct termio old,new;
     49         //获取当前到设置
     50         ioctl(STDOUT_FILENO,TCGETA,&old);
     51         
     52         new = old;
     53         new.c_lflag &= ~ICANON;//remove ICANON
     54         //设置当前模式为无缓冲模式
     55         ioctl(STDIN_FILENO,TCSETA,&new);
     56         
     57         char c = 0;
     58         while(c != '
    ')
     59         {
     60                 c = getchar();
     61                 printf(" -->%d
    ",c);
     62         }
     63         
     64         ioctl(STDIN_FILENO,TCSETA,&old);
     65         return;
     66 }
     67 
     68 //设置不回显模式
     69 void TestPasswd()
     70 {
     71         struct termio old,new;
     72         ioctl(STDIN_FILENO,TCSETA,&old);
     73         
     74         new = old;
     75         new.c_lflag &= ~ECHO;
     76         
     77         ioctl(STDIN_FILENO,TCSETA,&new);
     78     
     79         char szPass[100] = {};
     80         fprintf(stderr,"Password:");
     81         scanf("%s",szPass);
     82         
     83         
     84         ioctl(STDIN_FILENO,TCSETA,&old);
     85         
     86         printf("
    ");
     87         printf("Your password is:%s",szPass);
     88 }
     89 
     90 //设置等待
     91 void TestCCC()
     92 {
     93         struct termio old,new;
     94         char szBuf[100] = {};
     95         //获得属性
     96         ioctl(STDIN_FILENO,TCGETA,&old);
     97         
     98         //设置新的属性
     99         new = old;
    100         //最大到输入长度
    101         new.c_cc[VMIN] =10;
    102         //等待时间
    103         new.c_cc[VTIME] = 50;//50 -> 5 second
    104         //无缓冲模式
    105         new.c_lflag &= ~ICANON;//remove ICANON
    106         ioctl(STDIN_FILENO,TCSETA,&new);
    107         
    108         fprintf(stderr,"Input:");
    109         
    110         read(STDIN_FILENO,szBuf,100);
    111         
    112         printf("szBuf:%s",szBuf);
    113         
    114         //恢复原来的属性
    115         ioctl(STDIN_FILENO,TCSETA,&old);
    116 }
    117 
    118 int main()
    119 {
    120     //TestIoflag();
    121     //TestOflag();
    122     //PrintCharAscii();
    123     //TestPasswd();
    124     TestCCC();
    125     return 0;
    126 }
    
    
    



    1.设备文件操作流程

     

     

    2.常用属性设置

  • 相关阅读:
    讲解开源项目:一步步跑起来个 Java 前后端分离的人力资源管理系统
    HelloDjango 第 12 篇:解锁博客侧栏,GoGoGo!
    HelloDjango 第 11 篇:自动生成文章摘要
    Python 命令行之旅:深入 argparse(二)
    MongoDB 复制机制
    GridView自定义分页
    接口分离原则
    依赖倒置原则
    访问 IIS 元数据库失败 的解决方法
    开放封闭原则
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8984033.html
Copyright © 2011-2022 走看看