/dev/input/event的值由系统的值不一样需要设定。

运行需要root权限。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <linux/input.h>
#include <sys/stat.h>
#include <fcntl.h>
int main ()
{int keys_fd;int pipes[2];struct input_event t;char buf[100];int pid,pid1;int nread;int key_code;if(pipe(pipes) < 0){printf("%s\n","pipes error!" );exit(EXIT_FAILURE);}pid = fork();if(pid < 0 ){printf("%s\n","fork() function error!" );;exit(EXIT_FAILURE);}else if(pid == 0){keys_fd = open ("/dev/input/event4", O_RDONLY);if (keys_fd <= 0){printf ("open /dev/input/event4 device error!\n");}close(pipes[0]);while (1){if (read (keys_fd, &t, sizeof (t)) == sizeof (t)){if (t.type == EV_KEY){if ( t.value == 0){printf ("key %d \n", t.code);//sprintf(buf,"key %d \n\0", t.code);key_code = t.code;write(pipes[1],&key_code,sizeof(key_code));if(t.code==KEY_ESC)break;}}}}close (keys_fd);close(pipes[1]);exit(EXIT_SUCCESS);}else{pid1 = fork();if(pid1 < 0 ){printf("%s\n"," fork function error" );exit(EXIT_FAILURE);}if(pid1 == 0){FILE * fp;close(pipes[1]);//int writefd;fp = fopen("data.out","w+");//writefd = open("data.out", O_WRONLY | O_CREAT);while(1){read(pipes[0],&key_code,sizeof(key_code));//write(writefd,&key_code,sizeof(key_code));fprintf( fp,"%d    ",key_code);if(key_code == 1)break;}close(pipes[0]);exit(EXIT_SUCCESS);}else{exit(EXIT_SUCCESS);}          }  return 0;
}\/ 

转载于:https://blog.51cto.com/yongjiuzhizhen/1319706

侦听键盘,将data写入文件data.out(成功版本)相关推荐

  1. Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrack、onTrigger、onInvalidate、副作用的刷新时机、`watch` 、pre)

    Vue3官网-高级指南(十七)响应式计算computed和侦听watchEffect(onTrack.onTrigger.onInvalidate.副作用的刷新时机.watch .pre).渲染机制和 ...

  2. Vue属性篇_侦听器watch

    作用:侦听属性,响应数据(data&computed)的变化,当数据变化时,会立即执行对应函数,其属性值可以为函数.字符串.对象和数组. 1.属性值类型 (1)函数类型 函数类型中,被侦听的数 ...

  3. vue修改计算属性的值_Vue语法高级之计算属性和侦听器

    计算属性和侦听器都可以监听到data区数据的变化,当数据变化时可以触发方法的调用,从而在方法内部可以进行相应的逻辑处理. 计算属性的语法格式是:computed: {} 侦听器的语法格式是:watch ...

  4. 记录一下使用nodejs爬取双色球历史开奖数据并写入文件过程,仅自己做着玩玩

    [双色球给了几个红球和几个蓝球使用js生成所有可能的结果] 发送请求这里使用的 superagent 解析 html 这里使用的 cheerio 拿的数据是:https://datachart.500 ...

  5. UI一揽子计划 18 (沙盒机制、简单对象写入文件、NSFileMange、复杂对象写入文件)

    1. 沙盒机制 数据持久化的原因及本质: 存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的.数据持久化是将数据保存成文件,存储到程序的沙盒中. 每个应用程序都有独立的沙盒,就是一个文 ...

  6. java写入html,java如何写入文件

    java如何追加写入txt文件 BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (newjava中,对文件进行追加内容操作 ...

  7. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数

    目录 组件结构 组件的命名规则: 组件的data参数 <font color='red'> 组件的父子传值prop(通信) <font color='red'>组件的子--&g ...

  8. 找出100以内所有能被3整除的数,并把结果写入d:\xxx\data.dat文件中

    给一位CSDN朋友写的一个demo 描述:找出100以内所有能被3整除的数,并把结果写入d:\xxx\data.dat文件中. import java.io.File; import java.io. ...

  9. data后缀文件解码_Java语法进阶13-文件、IO流

    File File是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流. File ...

  10. 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然

    编写一个程序.要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件"data.txt"中,然后再编写一个程序,从文件"data.txt"中读取这5 ...

最新文章

  1. 数据分析之Pandas缺失数据处理
  2. 基于wayland的linux桌面,揭开Wayland的面纱(二):Wayland应运而生
  3. 【Storm】一张图搞定Storm的运行架构
  4. Android之ListViewJson加载网络数据
  5. 关于我转生变成史莱姆这档事
  6. 在MFC单文档中,如何操作状态栏
  7. zabbix 监控 Esxi
  8. hibernate _批量抓取
  9. 人工智能芯片与传统芯片的区别
  10. 如何使用JavaScript获取客户端的IP地址?
  11. Tcpdump源码分析系列4:main函数继续研究
  12. 猜数字游戏c语言编程排行榜,C语言程序经典示例—-(7)猜数字游戏
  13. 怎么把pdf文件转换成word免费转换器
  14. 官方固件库V1.4版本介绍
  15. Synchronized 用法以及和ReetrantLock的区别
  16. unity VR中制作小地图的方法
  17. Simulink代码生成: 使能子系统及其代码
  18. 解决Mac电脑开机无法自动连接蓝牙音箱问题!
  19. 《白话大数据与机器学习》学习笔记
  20. 迭代器的定义与自定义一个迭代器

热门文章

  1. asp.net 实现动态显示当前时间(不用javascript不考虑开销)
  2. Could not find a declaration file for module 'vue-xxx'.
  3. 关于强连通图和欧拉图的一些粗浅理解
  4. 为什么你应该开始学习编程了
  5. JavaWEB开发国际化
  6. Qt QString to char*
  7. c#中关于结构体和字节数组转化
  8. 如何落地用户画像分析?
  9. Eero并入Amazon:确保用户隐私政策依然不变
  10. 使用数据库引擎优化顾问添加建议索引