epoll是linux特有的IO复用函数。epoll的优点:
- 相对于select和poll来说,epoll更加灵活,没有文件描述符的限制。
- epoll使用一个文件描述符管理多个需要处理的文件描述符,将用户关心的文件描述符事件放到内核的一个事件表中。这样在用户空间和内核空间的数据拷贝只需一次。
epoll的接口:
(1)头文件
#include <sys/epoll.h>
(2)创建函数
int epoll_create(int size);
创建一个epoll的文件描述符,size用来告诉内核需要监听的数目。该函数返回的文件描述符将作为其他所有epoll系统调用的第一个参数,以指定用来访问的内核事件表。
(3) 事件注册函数
int epoll_ctl(int epfd , int op , int fd , struct epoll_event *event);
参数说明:
- epfd:是epoll_create函数返回的文件描述符
- op:表示要进行的操作,由三个宏来表示
- EPOLL_CTL_ADD:将新的fd加入到epfd中
- EPOLL_CTL_MOD:修改epfd中已经存在的fd
- EPOLL_CTL_DEL:从e