#include <termio.h>int getch(void)
{struct termios tm, tm_old;int fd = 0, ch;if (tcgetattr(fd, &tm) < 0) {//保存现在的终端设置return -1;}tm_old = tm;cfmakeraw(&tm);//更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理if (tcsetattr(fd, TCSANOW, &tm) < 0) {//设置上更改之后的设置return -1;}ch = getchar();if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {//更改设置为最初的样子return -1;}return ch;
}
总体的思路就是设置终端的属性
设置为原始模式,这种模式下输入就是无缓冲的,
设置过去,输入完之后然后再更改回来
主要就是两个函数
tcgetattr()和tcsetattr()



由于在linux中没有conio.h文件,所以不能直接用getch()函数,下面介绍如何在linux中使用getch()函数:

在linux中并没有 conio.h 这个文件,要实现类似 getch()/getche() 等函数的功能,可以使用 curses库。

#include <curses.h>
使用 curses 之前要先进行初始化,用完了要注消————这些操作分别调用 initscr() endwin() 来完成.

main(){
initscr();
.
.
.
endwin();
}

注:在编译的时候如果编译不过,可以试着添加 -l curses 参数来引入 curses 库

例如:

1.建立test.c 文件

#include <stdio.h>
#include "stdlib.h"
#include "string.h"
#include <curses.h>
int main()
{initscr();char ch;int i;while(1){ch=getch();printf("%c",ch);fflush(stdout);}endwin();return 0;}

2.用以下命令编译:gcc -o test -l curses test.c

3.运行:./test    即可看到效果

在linux中使用getch()函数相关推荐

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

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

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

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

  3. linux中的umask 函数

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. mybatis plus 使用函数_这些Mybatis-Plus使用技巧,太火了
  2. 中国蚁剑 代码解压出错:【object Object】解决方法
  3. php中文本设置随机颜色,php 产生随机整数,随机字符串,随机颜色等类用法
  4. Java 18 正式发布,默认 UTF-8,finalize 被弃用,别再乱用了!
  5. android 重新启动应用程序,在AsyncTask完成后重新启动完整的Android应用程序
  6. 【Python3】POP3协议收邮件
  7. gnome没有命令行_命令行提示,喜欢GNOME的8个理由,自动Raspberry Pi备份等
  8. java 安卓权限_java – Android运行时权限 – 如何实现
  9. Web Service工作原理及实例
  10. 由树的定义和递归想到的
  11. H3C S5500V2交换机误格式化恢复
  12. 认清性能问题,性能问题深入探究----性能之「道」
  13. Vscode Opencv4.5.2环境搭建
  14. 推荐 21 款博主常用 MacOS 软件
  15. 浏览器下载软件时,默认是用迅雷下载,如何取消?
  16. 常见的关系型数据库与非关系型数据库对比详解。
  17. fedora14配置无线连接
  18. 网卡工作模式(混杂模式)
  19. 基于微信小程序的在线学习平台
  20. 动态获取姓名,弹出花名册

热门文章

  1. 轻量化网络-SqueezeNet(2016)
  2. Ramps 1.4升级Marlin2.0.x改12864显示屏并添加打印机箱体温度显示
  3. 运放-运算放大器经典应用电路大全-应用电路大全-20种经典电路
  4. 使用NGINX发布DEM切片
  5. 登录网络计算机提示用户名错误,局域网访问共享时提示登录失败:未知的用户名或错误密码 怎么回事...
  6. 三万字总结╰(*°▽°*)╯ 计算机网络 知识点汇总
  7. java网络编程(网络通信)
  8. 使用Camtasia来给视频或者图片调色
  9. PureMVC 游戏框架解析
  10. js提取JSON数据中需要的那部分数据