epoll一共需要三步:
//声明epoll类型的结构体,ev位要设置的变量,rev位返回时设置变量
1. 创建epoll机制
int epfd;
struct epoll_event ev, rev[count];
epfd=epoll_create1(0)//参数为0或EPOLL_CLOEXEC
2. 配置epoll文件
epoll_ctl (int epfd, int op, int fd, struct epoll_event *event)
epfd:epoll机制文件描述符
op: 执行什么操作
EPOLL_CTL_ADD:添加一个文件描述符到epoll机制中
EPOLL_CTL_ADD :
EPOLL_CTL_ADD:删除一个文件文件描述符
fd:要对哪一个文件描述符进行操作
struct epoll_event{
uint32_t event; //要监听的事件 //EPOLLIN | EPOLLIN | EPOLLIN....
epoll_data_t data;//data是一个联合体,一般常用*ptr或fd
}
3. 阻塞等待事件
epoll_wait(int epfd, struct epoll_event *events,int maxevents,int timeout)
epfd:epoll文件描述符
events:事件发生后用于记录的数组,如上声明的rev;
maxevents:最大监听(并发)数量
timeout:-1代表永不超时,无触发则阻塞。q