思想是把终端设置为非缓存

  1. #include <stdio.h>
  2. #include <termios.h>
  3. #include <unistd.h>
  4. #include <assert.h>
  5. #include <string.h>
  6. int getch(void);
  7. int main(void)
  8. {
  9. char ch;
  10. printf("Input a char:");
  11. fflush(stdin);
  12. ch = getch();
  13. printf("\nYou input character is: %c\n", ch);
  14. return 0;
  15. }
  16. int getch(void)
  17. {
  18. int c=0;
  19. struct termios org_opts, new_opts;
  20. int res=0;
  21. //-----  store old settings -----------
  22. res=tcgetattr(STDIN_FILENO, &org_opts);
  23. assert(res==0);
  24. //---- set new terminal parms --------
  25. memcpy(&new_opts, &org_opts, sizeof(new_opts));
  26. new_opts.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE | ICRNL);
  27. tcsetattr(STDIN_FILENO, TCSANOW, &new_opts);
  28. c=getchar();
  29. //------  restore old settings ---------
  30. res=tcsetattr(STDIN_FILENO, TCSANOW, &org_opts);assert(res==0);
  31. return c;
  32. }

linux中实现getch函数相关推荐

  1. linux运行getch吗,在linux中使用getch()函数

    http://blog.csdn.net/xiaoweige207/article/details/6206265 由于在Linux中没有conio.h文件,所以不能直接用getch()函数,下面介绍 ...

  2. 在linux中使用getch()函数

    #include <termio.h>int getch(void) {struct termios tm, tm_old;int fd = 0, ch;if (tcgetattr(fd, ...

  3. linux中进程退出函数:exit()和_exit()的区别

    linux中进程退出函数:exit()和_exit()的区别 (1)_exit()执行后立即返回给内核,而exit()要先执行一些清除操作,然后将控制权交给内核. (2)调用_exit函数时,其会关闭 ...

  4. linux中的umask 函数

    我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢? umask是什么? 当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情.umask设置了 ...

  5. Linux中 C++ main函数参数argc和argv含义及用法

    Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...

  6. linux之getcwd函数解析,如何在Linux 中使用getcwd()函数

    如何在Linux 中使用getcwd()函数 发布时间:2021-03-15 17:35:21 来源:亿速云 阅读:106 作者:Leah 这期内容当中小编将会给大家带来有关如何在Linux 中使用g ...

  7. linux中的sleep函数和delay函数

    对于做过单片机程序的朋友来说,delay是很常见的函数,通常就是while或者for循环,进行空指令的执行,由于单片机的晶振固定,一个机器周期的时间是固定的,执行多少个空指令, 就可以完成多少个机器周 ...

  8. 时间基础概念及Linux中的时间函数

    时间基础概念及Linux中的时间函数 时间相关概念 GMT 时间 UTC 时间 时区 `Time Zone` 夏令时 `DST` 本地时间 `localtime` Linux 系统中的时间 时钟基础概 ...

  9. linux内核的延时函数,linux中内核延时函数 (转)

    第一类延时函数原型是:(忙等) void ndelay(unsigned long nsecs); void udelay(unsigned long usecs); void mdelay(unsi ...

  10. 深入解析Linux中的fork函数

    1.定义 #include <unistd.h> #include<sys/types.h> pid_t fork( void ); pid_t 是一个宏定义,其实质是int, ...

最新文章

  1. 在SQLserver数据库里设置作业的步骤
  2. CS9:转载:怎样配置Win Radius 当使用Cisco交换机时
  3. 函数式编程语言python-Python——五分钟理解函数式编程与闭包
  4. 040 DataFrame中的write与read编程
  5. GHOST光盘制作详细教程
  6. EF Core中避免贫血模型的三种行之有效的方法(翻译)
  7. 商务部部长助理黄海:中国服务外包产业发展势头良好
  8. win32开发(鼠标)
  9. 如何打造程序员专属聊天室?
  10. 航天电子业绩下降近两成
  11. Java经典编程习题100例,供初学者学习
  12. electron仿制百度网盘客户端2(登录界面制作)
  13. 'break' not in the 'loop' or 'switch' context 报错
  14. python中运用django_【Django】在项目中使用python
  15. 新浪微博PC客户端,(蓝星星微博客户端)VC++
  16. 精美素材:10套最新出炉的免费扁平图标下载
  17. 【火车票】心蓝抢票软件
  18. Python机器学习及实践——基础篇9(SVM回归)
  19. 什么是融资?怎么才能融资?如何实现个人融资?
  20. xheditor使用方法记录

热门文章

  1. B站韩顺平java学习笔记(九)-- 面向对象编程(高级)章节
  2. 数字图像处理matlab蔡利梅,数字图像处理:使用MATLAB分析与实现:using MATLAB
  3. 黑名单电话和短信拦截
  4. Python入门必备五本书籍,精华满满,直击重心
  5. 大数据之Hadoop简介
  6. 创建.config后缀文件
  7. 微信小程序图片全屏显示
  8. 跟兄弟连学PHP PDF 分享
  9. C语言课程设计:课程管理系统
  10. 百度网盘资源搜索网站大全