函数epoll
1. 函数epoll_creat: 该函数生成一个epoll专用的文件描述符
int epoll_creae(int size);
分析:
- size:epoll上能关注的最大描述符数
2. epoll_ctl:用于控制某个epoll文件描述符事件,可以注册、修改、删除
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
参数:
1. efd:epoll_create函数的返回值
2. op:对该监听红黑树所做的操作
- EPOLL_CTL_ADD:添加新的fd到epfd中
- EPOLL_CTL_MOD:修改fd在监听红黑树的监听事件
- EPOLL_CTL_DE:将一个fd从监听红黑树摘下
3. fd:待监听的fd
4. event:本质struct epoll_event 结构体地址
1 typedef union epoll_data 2 { 3 void* ptr; 4 int fd; //对应监听的fd 5 uint32_t u32; 6 uint64_t u64; 7 } epoll_data_t; 8 9 struct epoll_event 10 { 11 uint32_t events; /* Epoll events */ 12 epoll_data_t data; /* User data variable */ 13 };
3. 等待IO事件发生 - 可以设置阻塞的函数
1 int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
参数:
- efds:epoll_create函数的返回值
- events:传出参数,【数组】,。满足监听条件的哪些fd结构体
- maxevents:数组元素的总个数(1024) struct epoll_events [1024]:
- timeout: