epoll
- 三个函数:
-
该函数生成一个epoll专门的文件描述符
-
int epoll_creae(int size);
- size: epoll上能关注的最大描述符数
-
用于控制某个epoll文件描述符事件,可以注册,修改,删除
-
int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event);
- epfd: epoll_create生成的epoll专用描述符
- op:
- EPOLL_CTL_ADD ---注册
- EPOLL_CTL_MOD ---修改
- EPOLL_CTL_DEL ---删除
- fd: 关联的文件描述符
- event: 告诉内核要监听什么事件
- EPOLLIN -读
- EPOLLOUT -写
- EPOLLERR -异常
-
等待IO事件发生-可以设置阻塞的函数
-
int epoll_wait(
int epfd, //要检测的句柄
struct epoll_event* events, //用于回传待处理事件的数组
int maxevnets, //告诉内核这个events的大小
int timeout); //为超时时间 -1:永久阻塞 0:立即返回 >0:等待的时长毫秒
对应select和poll函数
struct epoll_event event*
-
typedef union epoll_data{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
}epoll_data_t;
struct epoll_event{
uint32_t events;
epoll_data_t data;
}