当前位置:  技术问答>linux和unix

【100分】在Linux C下如何获取按键值?

    来源: 互联网  发布时间:2016-11-12

    本文导语:  想写一个程序,读取键盘上的按键值: 两个线程在不停的运转,我想在这些线程运行的同时,获取按键值,从而控制(结束)线程(当然线程已经通过信号量和互斥变量处理)。 请问是否有相应的函数或者具体的实...

想写一个程序,读取键盘上的按键值:

两个线程在不停的运转,我想在这些线程运行的同时,获取按键值,从而控制(结束)线程(当然线程已经通过信号量和互斥变量处理)。
请问是否有相应的函数或者具体的实现代码。

不胜感激!


已经尝试过自己写khbit(),但是这个不能及时的获取中断信息。

|
getchar读,另外,刚才的代码的settermios函数没写好
#include 
#include 
#include 
#include 
#include 
void settermios(int flag)
{
if(flag)
system("stty cbreak -echo");
else
system("stty cooked echo");
}
int kbhit(void)
{
struct timeval tv;
fd_set rdfs;
tv.tv_sec = 0;
tv.tv_usec = 0;
FD_ZERO(&rdfs);
FD_SET (STDIN_FILENO, &rdfs);
select(STDIN_FILENO+1, &rdfs, NULL, NULL, &tv);
return FD_ISSET(STDIN_FILENO, &rdfs);
}
int main()
{
settermios(1);
while(!kbhit()){
printf("No keys are pressedn");
sleep(1);
}
printf("You pressed:%c n",getchar());
settermios(0);
return 0;
}

|


这种方法是可以的,楼主也是想只要按下某个键(不需要回车)就可以接收。
我想了一下,是不是由于行缓冲的缘故。可以用setbuf()设置不缓冲,然后用read()调用读取标准输入的值,每次读取一个字节,这样应该可以了。

    
 
 

您可能感兴趣的文章:

  • 急需按键驱动源码 s3c2410开发板 linux-2.6.33的内核
  • linux控制台程序如何检测有无按键?
  • LINUX中如何模拟鼠标和键盘的按键动作
  • 在LINUX怎么得到按键编码呀
  • 关于linux下如何向操作系统发送按键的问题
  • 请问在linux下怎么编程实现屏蔽系统按键啊
  • 关于 linux 按键驱动 的问题???
  • 在linux下如何获得按键的键值,上午在线等待,甚急!!
  • linux启动时就设置进入图形模式(不是加载X-Window),但这个模式下,如果响应鼠标和键盘事件(可以响应所有键值和鼠标按键)!
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • linux获取主机名后用gethostbyname() 不能获取主机ip
  • 新手问题:Linux下如何获取进程占用的系统资源
  • LINUX下获取WINDOWS用户(组)和系统服务?
  • 关于在linux获取系统软件信息
  • linux dhcpv6概率获取不到地址
  • linux 内核空间如何获取当前时间(常用格式)
  • c/c++开源软件 iis7站长之家
  • Linux 如何获取 所有的接口信息
  • linux程序获取显示器个数
  • 怎样获取超过4G的Linux Regular文件的大下?
  • 如何获取应用程序的当前路径(Linux)
  • 急,请问Linux中如何像windows获取网络接口是否插入网线???
  • Linux下蓝牙命令.如何获取主类信息
  • linux如何获取当前程序ID并用shell脚本停止进程
  • linux /proc 的问题。以及获取子进程虚拟内存信息。
  • Linux系统下如何获取STL帮助
  • linux如何获取在浏览器或者文本编辑器中复制的内容
  • linux下如何用C语言获取不同网段上设备的MAC地址
  • linux内核层面,有什么好的获取时间的函数
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教一下关于linux内存管理的问题,100分(只能给100),:)~
  • linux多线程编程中如何间隔100ms发送一次网络数据包,100ms的时间如何把握?
  • Linux 能否用100M的网卡?
  • 送100!!!!!!!!!!!!!怎样编译Red Linux 9的内核?!!!!!!!!!!!!!100送
  • 2个LINUX 基础问题 100分
  • 如何卸载LINUX的引导程序?急。。。(100)
  • 100分,100分,linux ppp内核驱动
  • 在linux下怎么画一条直线?只用xwindow。给100分。
  • 哪里有broadcom 440x 10/100 for linux 驱动??
  • 100分求redhat linux 7.2 下载地址(可下载)
  • 100分求LINUX下集群工具 急!!急!!急!!
  • 哪里能够下载《Linux 内核源代码情景分析》,100分相送
  • 哪位在linux下安装成功jbuilder 7.0,给您100分!
  • 仍100分进你口袋! 求<<GNU/LINUX编程指南>>下载地址!
  • 高手求救,在windows下访问linux服务器时使用如\192.168.100.1,但是访问失败,问在linux上要怎么设置啊
  • linux格式化后启动问题(100)
  • 100分请教ColdFire或其他nommu的cpu下linux具体启动过程.
  • linux的shell删除文件中100行的,每行的前6个字符的问题?
  • (100分)为什么装完Linux后Windows速度这么慢???
  • 100分求linux下的websphere
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3