1、内核事件表
epoll是Linux特有的I/O复用函数。epoll把用户关心的文件描述上的事件放在内核里的一个事件表中,并用一个额外的文件描述符来标识该内核事件表。这个额外文件描述符使用函数epoll_create函数来创建。
#include<sys/epoll.h>
int epoll_create(int size)
size参数给内核提示事件表需要多大。该函数返回的文件描述符用作其他epoll函数的第一个参数,标识要访问的内核事件表。
2、epoll_ctl函数
此函数用来操作内核事件表,操作类型有三种:
- EPOLL_CTL_ADD 往事件表中注册事件
- EPOLL_CTL_MOD 修改注册事件
- EPOLL_CTL_DEL 删除注册事件
#include<sys/epoll.h>
int epoll_ctl(int epfd, int op, int fd, struct epoll_event* event) //成功返回0,失败返回-1并置errno
fd参数是要操作的文件描述符,op参数指定操作类型,event参数指定事件,epoll_event定义如下:
struct epoll_event
{
_uint32_t events; //epoll事件
epoll_data_t data; //用户数据
};
其中events成员描述事件类型,data成员用于存储用户数据,epoll_da