epoll函数组
/*创建epoll句柄*/
int epoll_create(int size);//size参数实际上已经被弃用
/*epoll句柄的控制接口*/
int epoll_ctl(int epfd,int op,int fd,struct epoll_event *event);
epfd:epoll专用的文件描述符,epoll_create()的返回值
op:表示动作,用三个宏来表示:
EPOLL_CTL_ADD:注册新的fd到epfd中;
EPOLL_CTL_MOD:修改已经注册的fd的监听事件
EPOLL_CTL_DEL:从epfd中删除一个fd;
fd:需要监听的文件描述符
event:告诉内核要监听什么事件
typedef union epoll_date {
void *ptr;
int fd;
__uint 32_t u32;
__uint64_t u64;
}epoll_date_t;
struct epoll_event {
__uint32_t events;
epoll_date_t date;
}
epoll_event结构体
/*等待epoll文件描述符上的I/O事件*/
int epoll_wait(int epfd, struct epoll event *events, int maxevents, int timeout);
epfd:epoll专用的文件描述符,epoll_create()的返回值
events:分配好的epoll_event结构体数据,epoll_wait 将会吧发生的事件赋值到events数组中
maxevents:events数组的元素个数
timeout:超时时间,单位为毫秒,为-1时,函数为阻塞