linux下实现getch()函数的功能,linux下有没有和windows下的getch函数功能基本一样的函数?...
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函数功能基本一样的函数?...相关推荐
- TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作
TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作 ...
- 使用 python 实现 获取与本机在同一局域网下的其他设备 IP和MAC的映射关系(Windows 下
运行截图如下: 代码 直接贴代码了,里面有很详细的注释: # -*- coding: utf-8 -*- import os import re import socket# 获取指定IP地址的MAC ...
- Windows下程序向Linux下移植实践
一.问题的提出 在程序员中有这样一个说法,若一个程序不能移植到Linux下,那这个程序将看不到未来. 由于Linux操作系统源码公开是的,开发库等辅助工具都是源码公开的,这样就减少了程序的不可预知性, ...
- linux与windows下开发,Linux 与 Windows下开发感受
Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...
- Windows下使用VSCode远程搭建Linux开发平台
Windows下使用VSCode远程搭建Linux开发平台 前言 1.开启Windows的SSH功能 1.1.打开设置,进入应用 1.2.进入可选功能 1.3.安装SSH功能 2.开启Linux的SS ...
- Linux与Windows下的socket网络编程对比
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量.文章设置为仅粉丝可见,是因为写博客确实花了不少精力.希望互相进步谢谢!! 文章目录 阅读前请看一下:我是一个热衷于记 ...
- 为什么在 Windows 下用 Ctrl+Z 退出 Python 而 Linux 下用 Ctrl+D 呢?
打开我们的命令行,输入 python ,我们会进入 python 的交互模式. 当我们想退出 python ,返回我们的 shell 时,你将如何退出? 如上,两个行之有效的方法是输入 exit() ...
- 在Windows下远程桌面连接Linux - VNC篇
VNC是由AT&T试验室开发,是一款优秀的远程控制工具软件,后来以GPL授权的形式开源.经过几年的发展,现在的VNC已经不单指某个软件,而是一类软件的通称.下面介绍Linux下常用的两个VNC ...
- 关于linux下网络服务器和windows下Qt客户端的通信(图片文件显示)
关于最近比较火的物联网视频监控项目,在这里给大家分享下图片传输这一块,首先客户端显示是在Windows下Qt中,服务器是在linux系统ubuntu中,服务端打开本地两张图片循环发送给客户端Qt进行显 ...
- Linux管道的原子性,管道的原子性 linux写操作原子性
从本质上说,管道也是一种文件,但他又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题 限制管道的大小.实际上,管道是一个固定大小的缓冲区.在Linux中该换冲区的大小为一页,4k 使得他的 ...
最新文章
- 计算机意外地重新启动或遇到错误。windows安装无法继续。若要安装windows 请单击 确定 重新启动计算机...
- zxing开源库工作流程源码详解
- 条件格式英语成绩大于计算机,决胜计算机二级Ms office(三)
- SpringMVC_3.请求映射与静态资源处理
- mysql为什么要编译安装_Mysql编译安装
- 区块链的那些事,你知道和不知道的都在这里!
- 条件注释判断浏览器版本!--[if lt IE 9](转载)
- 读名老中医之路笔记(二)
- hive中groupby优化_Hive数据倾斜
- php foreach bcc,php – 无法通过Mandrill发送BCC电子邮件(通过Laravel)
- Vue中数组变动监听
- c# 日期转换为单词
- Vue运行报错webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
- 从零开始系统学习区块链
- 兴业研发晨会纪要2008年 10月 30日
- 电子书-CHM-上线CS
- 百度网盘官方免费极速下载(不定期更新)
- 俄罗斯方块游戏的消行实现
- 产品硬件成本分析_硬件项目中的错误成本
- 音频剪辑合成 php,教你如何剪辑多个视频合并成一个 视频剪辑合并软件
热门文章
- 使用U盘全新安装Mac OS X EI Capitan
- php俄语包,俄语资源汇总 - 俄语 | Russian | Pусский - 声同小语种论坛 - Powered by phpwind...
- BigDecimal除法报错:java.lang.ArithmeticException: Division undefined
- VMware 中软盘镜像文件 *.flp 使用方法
- NOIP2013 复盘
- javascript prototype 学习笔记
- matlab yalmip cplex,关于 cplex+matlab+yalmip问题
- echarts 地图 给每个区域设置定位点图标及散点
- 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(十五)网络通讯指令SEND,RECV,CMND...
- 互联网潜规则:如何进行敏感词屏蔽