epoll 基础API
来源:互联网 发布:淘宝抢购秒杀快速付款 编辑:程序博客网 时间:2024/05/22 13:08
1.创建一个epoll句柄,参数size用来告诉内核监听的文件描述符的个数,跟内存大小有关。
#include <sys/epoll.h>int epoll_create(int size) size:监听数目
2. 控制某个epoll监控的文件描述符上的事件:注册、修改、删除。
#include <sys/epoll.h>int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) epfd: 为epoll_creat的句柄 op: 表示动作,用3个宏来表示: EPOLL_CTL_ADD (注册新的fd到epfd), EPOLL_CTL_MOD (修改已经注册的fd的监听事件), EPOLL_CTL_DEL (从epfd删除一个fd); event: 告诉内核需要监听的事件 struct epoll_event { __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ }; typedef union epoll_data { void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; EPOLLIN : 表示对应的文件描述符可以读(包括对端SOCKET正常关闭) EPOLLOUT: 表示对应的文件描述符可以写 EPOLLPRI: 表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来) EPOLLERR: 表示对应的文件描述符发生错误 EPOLLHUP: 表示对应的文件描述符被挂断; EPOLLET: 将EPOLL设为边缘触发(Edge Triggered)模式,这是相对于水平触发(Level Triggered)而言的 EPOLLONESHOT:只监听一次事件,当监听完这次事件之后,如果还需要继续监听这个socket的话,需要再次把这个socket加入到EPOLL队列里
3.等待所监控文件描述符上有事件的产生,类似于select()调用。
#include <sys/epoll.h>int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout) events: 用来存内核得到事件的集合, maxevents: 告之内核这个events有多大,这个maxevents的值不能大于创建epoll_create()时的size, timeout: 是超时时间 -1: 阻塞 0: 立即返回,非阻塞 >0: 指定毫秒 返回值: 成功返回有多少文件描述符就绪,时间到时返回0,出错返回-1
阅读全文
0 0
- epoll 基础API
- epoll 基础
- epoll基础
- epoll基础总结
- 117-epoll(基础)
- epoll基础(转载)
- Linux epoll API 学习记录
- epoll系统调用的API
- 【核心基础】select,poll,epoll
- Nginx基础. epoll事件驱动模块
- linux基础——epoll学习笔记
- Linux编程基础之epoll简析
- 【Linux基础】select、poll、epoll详解
- epoll
- epoll
- epoll
- epoll
- epoll
- elasticsearch之Document APIs【Multi Get API】
- js 获取url参数
- 边框阴影的练习
- samba服务
- 佛洛依德冰山原理
- epoll 基础API
- 拆分数列 洛谷p1415
- [My SQL] 使用子查询
- 利用Android Studio 将moudle变成jar包
- 记 BUG: unable to handle kernel paging requrest at 0xffff7fXXXXXXXXX
- 使用maven+springmvc+POI对上传的Excel文件进行解析并操作
- FTP服务器搭建与权限配置
- 8球胜负(eight)
- html笔记