Linux 函数学习

1、Linux poll 函数


int poll(struct pollfd *fds, nfds_t nfds, int timeout);

fds: 需要轮询的fd集合

nfds:需要轮询的fds数量

timeout:超时时间

返回值:0 超时,<0 发生异常,> 0 存在数据变化

2、函数用例

#include <poll.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <linux/input.h>
#include <unistd.h>static char * eventTypeToString(__u16 type){switch(type){case EV_SYN:return "EV_SYN";case EV_KEY:return "EV_KEY";case EV_REL:return "EV_REL";case EV_ABS:return "EV_ABS";case EV_MSC:return "EV_MSC";case EV_SW:return "EV_SW";default:return "UNKOWN";}
}static char * eventCodeToString(__u16 code){switch(code){case KEY_ESC:return "KEY_ESC";case KEY_POWER:return "KEY_POWER";default:return "UNKOWN";}
}int main (int argc, char ** argv){int fd; int err;int len;/*需要轮询的fds*/struct pollfd fds[1];/*需要轮询的fds数量*/nfds_t nfds = 1;struct input_event event;if(argc != 2){printf("Usage: %s <dev> \n", argv[0]);}fd = open(argv[1], O_RDWR | O_NONBLOCK);if(fd < 0){printf("open %s err \n", argv[1]);} else {printf("open %s success \n",argv[1]);}while(1){fds[0].fd = fd;fds[0].events = POLLIN;fds[0].revents = 0;int ret = poll(fds,nfds,5000);printf("ret = %d \n", ret);if(ret > 0){if(fds[0].revents == POLLIN){while(read(fd, &event, sizeof(event)) == sizeof(event)){printf("get envent: type =0x%x, Code = 0x%x value = 0x%x",event.type, event.code, event.value);}}} else if (ret == 0){printf("time out \n");} else {perror("poll err \n");}}return 0;}

3、代码运行效果

编译二进制文件,运行到手机端


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode热题100】153. 寻找旋转排序数组中的最小值(二分)

一.题目要求 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若旋转 7…

几行代码搞懂静态类和静态方法

视频链接: 视频 代码链接: 源码 在C#中&#xff0c;静态类&#xff08;Static Class&#xff09;和静态方法&#xff08;Static Method&#xff09;是面向对象编程中的重要概念。它们允许你创建不依赖于对象实例的方法和属性&#xff0c;而是直接通过类名来访问。 静态类 静…

python学习笔记——类

1. 类和对象**** 类、类属性、类方法不需要实例化就可以直接访问 实例相关&#xff0c;如实例属性、实例方法必须实例化后才可以访问 1.1. 类、类属性、实例属性、私有属性**** 1.1.1. 定义**** 类就是拥有相同属性和功能对象的集合 动物&#xff1a;猫、狗、鸡 人类&…

【AIGC调研系列】AI大模型结合迁移学习进行微调的应用

AI大模型结合迁移学习进行微调的应用主要体现在通过预训练模型快速适应新任务&#xff0c;提高模型性能和准确性。迁移学习允许我们利用在其他任务上学到的知识来加速新任务的学习过程&#xff0c;从而减少对大量标注数据的依赖&#xff0c;提高训练效率[1][2][3]。在AI领域&am…

Python mixin

Python 中的 Mixin 类是一种特殊的继承机制,它允许我们在不修改类层次结构的情况下,向一个类添加额外的功能。Mixin 类通常包含一些可复用的方法或属性,可以被其他类继承和使用。 Mixin 类的主要特点如下: 可复用性: Mixin 类包含可重用的方法或属性,可以被多个类继承和使用,提…

Vue使用高德地图

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码&#xff0c;做好了注释&#xff08;初始化…

在内网环境下成功安装Vue Devtools的曲折历程与解决方案

经过一系列周折的探索&#xff0c;笔者在尝试将Vue Devtools扩展程序接入内网环境下的Chrome浏览器过程中遭遇了种种挑战&#xff0c;常规的在线安装途径均未能奏效。然而&#xff0c;功夫不负有心人&#xff0c;最终发掘了一种有效的方法&#xff0c;使得内网安装成为可能。 …

[AIGC] MySQL连接查询全面解析

在数据库操作中&#xff0c;经常需要从多个表中获取数据&#xff0c;并对这些数据进行合并处理。在MySQL中&#xff0c;我们通常会使用“连接&#xff08;JOIN&#xff09;”操作来实现这一需求。 文章目录 什么是连接查询MySQL支持的连接查询类型 什么是连接查询 连接查询是S…

3. Django 初探路由

3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…

研判特征流量

研判溯源应急 准备-检测-抑制-根除-恢复-跟踪总结 中级 内存马的判断和清除&#xff1a; 判断方式&#xff1a;先判断是通过什么方法注入的内存马&#xff0c;可以先查看web日志是否有可疑的web访问日志&#xff0c;如果是filter或者listener类型就会有大量url请求路径相同…

【IPV6】--- IPV6过渡技术之6 over 4隧道配置

1. IPV4和IPV6有什么区别&#xff1f; 2. IPV6如何在设备上配置&#xff1f; 3. IPV4和IPV6如何跨协议实现通信&#xff1f; 1. IPV4和IPV6 --- IPV6技术 - IP协议第六版 - 128位二进制数 - 2^12843亿*43亿*43亿*43亿 --- IPV4技术 - IP协议第四版 - 192.1…

python项目练习——18.文件加密和解密工具

这个项目可以让用户加密文件&#xff0c;以保护文件内容的安全性&#xff0c;也可以让用户解密已加密的文件。这个项目涉及到文件操作、加密算法等方面的技术。 代码示例&#xff1a; from cryptography.fernet import Fernet # 导入 Fernet 加密算法 import os # 导入 os 模…

Nginx 有关于网络连接的配置

网络链接的设置 超时时间 client_header_timeout client_header_timeout time; #默认单位 秒 客户端与服务器建立连接接收 HTTP 请求的时间&#xff0c;超出设置的时间即为超时。 默认&#xff1a;60 配置块&#xff1a;http、server、location client_body_timeout cl…

腾讯云流量怎么计算的?轻量服务器流量价格表

腾讯云轻量应用服务器套餐带流量包&#xff0c;就是有月流量限制的意思&#xff0c;超出轻量套餐的流量需要另外支付流量费&#xff0c;轻量服务器地域不同超额流量费用也不同&#xff0c;北京上海广州等中国内地地域流量价格是0.8元每GB&#xff0c;中国香港地域流量价格是1元…

创建自定义标题栏

我是qt新手,自己写的自定义标题栏,仅供参考 胜在简单易懂 实现 关闭 title 移动 三个功能 首先在.cpp文件中 this->setWindowFlags(Qt::FramelessWindowHint); 取消原先的标题栏 关闭和title结构简单 在一个布局中创建label和pushbutton,然后中间加一个弹簧 然后…

Redis Stack十部曲之三:理解Redis Stack中的数据类型

文章目录 前言String字符串作为计数器限制 List限制列表阻塞列表自动创建和删除聚合类型键限制 Set限制 Hash限制 Sorted Set范围操作字典操作更新分数 JSON路径限制 BitMapBitfieldProbabilisticHyperLogLogBloom filterCuckoo filtert-digestTop-KCount-min sketchConfigurat…

兼顾性能的数据倾斜处理方案

目录 前言 一、场景描述 二、常见的优化方法 2.1 Mapjoin 2.2 特殊值/空值打散 2.3 热点值打散&#xff0c;副表呈倍数扩散 2.4 热点数据单独处理/SkewJoin 2.5 方案总结 三、Distmapjoin 3.1 核心思路 3.2 代码实现 3.3 真实效果 四、方案总结 文章主要是介绍在支…

Java泛型方法

类上定义的泛型&#xff0c;在方法中也可以使用。但是&#xff0c;我们经常需要仅仅在某一个方法上使用泛型&#xff0c;这时候可以使用泛型方法。 调用泛型方法时&#xff0c;不需要像泛型类那样告诉编译器是什么类型&#xff0c;编译器可以自动推断出类型。 泛型方法的使用…

MUX VLAN

目录 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.使用Hybrid端口实现网络需求 3.使用Mux VLAN实现网络需求 原理概述 在实际的企业网络环境中&#xff0c;往往需要所有的终端用户都能够访问某些特定的服务器&#xff0c;而用户之间的访问控制规则则比较复杂。在…

✌2024/4/3—力扣—字符串转换整数

代码实现&#xff1a; int myAtoi(char *str) {long ret 0;int flag 1; // 默认正数// 去除空格及判断符号位while (*str ) {str;}if (*str -) {flag -1;str;} else if (*str ) {str;}// 排除非数字的情况if (*str < 0 || *str > 9) {return 0;}while (*str > …