linux中epoll模型
epoll是linux内核为处理大批量文件描述符而作了改进的poll,是linux下IO复用select/poll的增强版本。 一、epoll的主要接口是: 1、创建 (1)int epoll_create(int maxfds); maxfds是支持的最大句柄数。该函数会返回一个新的epoll句柄,之后的函数调用都用这个句柄来操作。用完之后,记得用close()关闭这个创建出来的epoll句柄,否则可能导致系统fd被耗尽。 (2)int epoll_reate1(int flag); 上面创建的方法在linux 2.6.8之后,maxfds是被忽略的,所以建议采用epoll_create1(0)这种方法。另外epoll_create1(EPOLLCLOEXEC)表示生成的epoll fd具有“执行后关闭”的特性。 2、事件注册 int epoll_ctl(int epfd,int op,int fd,struct epoll_event* event); epoll的事件注册函数,它不同于select/poll在监听的时候告诉内核要监听什么事件,而是先注册要监听的事件类型。 (1)epfd为(1)返回的epoll句柄 (2)op表示动作,用三个宏来表示: EPOLL_CTL_ADD:注册新的fd到epfd中 EPOLL_CTL_MOD:修改已注册的fd的监听事件 EPOLL