epoll 使用详解--epoll_create
epoll
提供的api和poll类似:同时监控多个文件描述符的事件变化。同时epoll可以被设置为水平触发或者边缘触发。(这两种触发的区别后面会详细的讲解)。从用户空间去理解,可以将一个epoll实例看做,内核中创建了两个队列,一个等待队列和一个就绪队列。
头文件包含:
#include <sys/epoll.h>
epoll API
创建epoll:
int epoll_create(int size); int epoll_create1(int flags);
这两个接口都是创建一个epoll实例,成功返回对应的描述符,失败返回-1。此文件描述符用于所有对epoll接口,的后续调用。文件在不再需要使用的时候,应该使用close关闭。当所有文件描述符引用到一个epoll实例已经关闭,内核销毁实例,并释放相关资源以供重用。
这两个接口功能稍有不同,epoll_create 的参数size表示是要指定这个epoll实例可以监控的最大的套接字个数,但是在 Linux 2.6.8 内核版本以后,这个参数内核已经不再处理了(就是没有限制了),但是必须要大于1。