EPOLL边缘触发模式监听事件,EPOLL是LINUX特有。众所周知,epoll维护了一个红黑树,来快速查找到有数据到来的fd对应的epoll_event结构体,从而copy给用户态,供用户详细地处理。
epoll是linux系统特有的I/O复用函数,epoll使用一组函数来完成任务,而不是单个函数,epoll把用户关心文件描述符放在内核的一个事件表当中,epoll需要使用一个额外的文件描述符来唯一标志内核的这个事件表,这个文件描述符用epoll_create()函数创建。
struct epoll_event* events;//用来存储发生事件的文件描述符
int tk_epoll_create(int flags){
int epoll_fd = epoll_create1(flags);//如果flags为0,则除了删除过时大小参数这一事实外epoll_create1()与epoll_create()相同
if(epoll_fd == -1)
return -1;
events = (struct epoll_event*)malloc(sizeof(struct epoll_event) * MAXEVENTS);//为events分配内存
return epoll_fd;
}
int epoll_fd = tk_epoll_create(0);
- epoll_create()函数
#include <sys/epoll.h> int epoll_create(int size); int epoll_create1(int flags); //linux2.6.8开始size被忽略,但是必须