当前位置: 首页 > news >正文

驱动开发6 IO多路复用——epoll

核心操作:一棵树、一张表、三个接口

相关案例

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/wait.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/epoll.h>
/* According to earlier standards */
#include <sys/time.h>int main(int argc, char const *argv[])
{int fd1, fd2, epfd;struct epoll_event event;      // 用于操作epollstruct epoll_event events[10]; // 存放就绪事件描述符的数组char buf[128] = {0};// 创建epoll句柄epfd = epoll_create(1);if (epfd < 0){printf("epoll_create filed\n");exit(-1);}// 打开设备文件fd1 = open("/dev/input/mouse0", O_RDWR);if (fd1 < 0){printf("打开鼠标设备文件失败\n");exit(-1);}fd2 = open("/dev/mycdev0", O_RDWR);if (fd2 < 0){printf("打开鼠标设备文件失败\n");exit(-1);}// 添加准备就绪事件进入epoll;event.events = EPOLLIN; // 读事件event.data.fd = fd1;if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd1, &event) < 0){printf("epoll_ctl add filed\n");}event.events = EPOLLIN; // 读事件event.data.fd = fd2;if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd2, &event) < 0){printf("epoll_ctl add filed\n");}// 监听事件是否发生while (1){// 如果成功,ret接收返回的事件个数,把就绪的事件放在events数组中int ret = epoll_wait(epfd, events, 10, -1);if (ret < 0){printf("epoll_wait filed\n");exit(-1);}int i;// 循环遍历数组,做事件的处理for (i = 0; i < ret; i++){if (events[i].events & EPOLLIN)//判断发生的事件是不是读事件{read(events[i].data.fd, buf, sizeof(buf));printf("buf:%s\n", buf);}}}close(fd1);close(fd2);return 0;
}

效果呈现

http://www.lryc.cn/news/210852.html

相关文章:

  • 【python学习笔记——列表】
  • TensorRT量化实战课YOLOv7量化:YOLOv7-PTQ量化(一)
  • [微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)
  • USACO12OPEN Balanced Cow Subsets G(meet in the middle)
  • GIT常用操作记录
  • 【ETL工具】Datax-ETL-SqlServerToHDFS
  • Kubernetes (K8S)概述
  • 11月14号|Move生态Meetup相约浪漫土耳其
  • mac vim没有颜色 问题
  • Servlet核心API
  • crs 维护模式 exclusive mode
  • 【OpenCV实现平滑图像形态学变化】
  • Ubuntu服务器中java -jar 后台运行Spring Boot项目
  • 微服务parent工程和子工程pom文件配置注意
  • STM32G030F6P6点灯闪烁
  • K8s开发人员也需要了解的相关知识
  • 创建并启动华为HarmonyOS本地与远程模拟器及远程真机
  • 责任链模式应用案例
  • 给你一个整数 num ,返回 num 中能整除 num 的数位的数目
  • Java后端开发——房贷计算器(Ajax版、Json版、等额本息+等额本金)
  • 2023.10.28 关于 synchronized 原理
  • 力扣 27. 移除元素
  • redis爆满导致数据丢失
  • Android14 WMS启动流程
  • 磁盘管理(初始化,引导块,坏块管理,固态硬盘)
  • mysql冷拷贝大表
  • 苍穹外卖-01
  • GAMP源码阅读(中)伪距单点定位 SPP
  • Epinoia-有状态网络的意图验证模块,略读
  • 14.力扣c++刷题-->有效括号