linux下可以模拟实现一个,网上找到的getch()函数,无法识别方向键,我改了一下,使用多线程实现获取方向键的键值,具体代码如下:

#include

#include

#include

int input;

pthread_t thread[1];

pthread_mutex_t mut;

void *regetch()

{

int n = 0;

n = fgetc(stdin);

input = n;

pthread_exit(NULL);

}

int getch(void)

{

struct termios tm, tm_old;

int fd = STDIN_FILENO,c;

if(tcgetattr(fd, &tm) < 0)

return -1;

tm_old = tm;

cfmakeraw(&tm);

if(tcsetattr(fd, TCSANOW, &tm) < 0)

return -1;

int k,temp;

input = fgetc(stdin);

k = input;

if(tcsetattr(fd,TCSANOW,&tm_old)<0) return -1;

if(k > 32){ /*为了能正常输入中文,就加了这段代码*/

c = k;

}

else{

while(1)

{

memset(&thread,0,sizeof(thread));

if((temp = pthread_create(&thread[0],NULL,regetch,NULL))!=0)

printf("用于获取按键输入的线程创建失败!\n");

usleep(1000);

pthread_cancel(thread[0]);

pthread_join(thread[0],NULL);

if(k == input) { c=input; break; }

else{ k = input; c=c+k;}

}

}

return c;

}

有什么不懂的可以追问。

linux下实现getch()函数的功能,linux下有没有和windows下的getch函数功能基本一样的函数?...相关推荐

  1. TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作

    TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作 ...

  2. 使用 python 实现 获取与本机在同一局域网下的其他设备 IP和MAC的映射关系(Windows 下

    运行截图如下: 代码 直接贴代码了,里面有很详细的注释: # -*- coding: utf-8 -*- import os import re import socket# 获取指定IP地址的MAC ...

  3. Windows下程序向Linux下移植实践

    一.问题的提出 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来. 由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性, ...

  4. linux与windows下开发,Linux 与 Windows下开发感受

    Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...

  5. Windows下使用VSCode远程搭建Linux开发平台

    Windows下使用VSCode远程搭建Linux开发平台 前言 1.开启Windows的SSH功能 1.1.打开设置,进入应用 1.2.进入可选功能 1.3.安装SSH功能 2.开启Linux的SS ...

  6. Linux与Windows下的socket网络编程对比

    阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量.文章设置为仅粉丝可见,是因为写博客确实花了不少精力.希望互相进步谢谢!! 文章目录 阅读前请看一下:我是一个热衷于记 ...

  7. 为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?

    打开我们的命令行,输入 python ,我们会进入 python 的交互模式. 当我们想退出 python ,返回我们的 shell 时,你将如何退出? 如上,两个行之有效的方法是输入 exit() ...

  8. 在Windows下远程桌面连接Linux - VNC篇

    VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源.经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称.下面介绍Linux下常用的两个VNC ...

  9. 关于linux下网络服务器和windows下Qt客户端的通信(图片文件显示)

    关于最近比较火的物联网视频监控项目,在这里给大家分享下图片传输这一块,首先客户端显示是在Windows下Qt中,服务器是在linux系统ubuntu中,服务端打开本地两张图片循环发送给客户端Qt进行显 ...

  10. Linux管道的原子性,管道的原子性 linux写操作原子性

    从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...

最新文章

  1. 计算机意外地重新启动或遇到错误。windows安装无法继续。若要安装windows 请单击 确定 重新启动计算机...
  2. zxing开源库工作流程源码详解
  3. 条件格式英语成绩大于计算机,决胜计算机二级Ms office(三)
  4. SpringMVC_3.请求映射与静态资源处理
  5. mysql为什么要编译安装_Mysql编译安装
  6. 区块链的那些事,你知道和不知道的都在这里!
  7. 条件注释判断浏览器版本!--[if lt IE 9](转载)
  8. 读名老中医之路笔记(二)
  9. hive中groupby优化_Hive数据倾斜
  10. php foreach bcc,php – 无法通过Mandrill发送BCC电子邮件(通过Laravel)
  11. Vue中数组变动监听
  12. c# 日期转换为单词
  13. Vue运行报错webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
  14. 从零开始系统学习区块链
  15. 兴业研发晨会纪要2008年 10月 30日
  16. 电子书-CHM-上线CS
  17. 百度网盘官方免费极速下载(不定期更新)
  18. 俄罗斯方块游戏的消行实现
  19. 产品硬件成本分析_硬件项目中的错误成本
  20. 音频剪辑合成 php,教你如何剪辑多个视频合并成一个 视频剪辑合并软件

热门文章

  1. 使用U盘全新安装Mac OS X EI Capitan
  2. php俄语包,俄语资源汇总 - 俄语 | Russian | Pусский - 声同小语种论坛 - Powered by phpwind...
  3. BigDecimal除法报错:java.lang.ArithmeticException: Division undefined
  4. VMware 中软盘镜像文件 *.flp 使用方法
  5. NOIP2013 复盘
  6. javascript prototype 学习笔记
  7. matlab yalmip cplex,关于 cplex+matlab+yalmip问题
  8. echarts 地图 给每个区域设置定位点图标及散点
  9. 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(十五)网络通讯指令SEND,RECV,CMND...
  10. 互联网潜规则:如何进行敏感词屏蔽