重要函数API
- [ epoll_create ]
#include<sys/epoll.h>
int epoll_create(int size) //创建一个epoll文件描述符,size是监听个数
epoll_create是创建一个存储文件描述符的红黑树,返回这颗红黑树的树根epfd。
- [ epoll_ctl ]
int epoll_ctl(int epfd, //epoll_create返回的文件描述符
int op, //三个选项,EPOLL_CTL_ADD,EPOLLCTL_MOD,EPOLL_CTR_DEL
int fd, //文件描述符,某个节点
struct epoll_event *event) //epoll事件,取地址
其中的struct epoll_event形式如下:
typedef union epoll_data
{
void *ptr;
int fd; //这个fd就是epoll_ctl中需要的fd
uint32_t u32;
uint64_t u64;
}epoll_data_t;
struct epoll_event
{
uint32_t events; //EPOLLIN,EPOLLOUT,EPOLLERR
epoll_data_t data //用户数据
}
- [ epoll_wait ]
int epoll_wait(int epfd,
struct epoll_event *event, //就绪事件数组,是个传出参数
int maxevents, //告知内核evenet数组的容量,maxevnets的值不能大于epoll_create的size
int timeout) //-1阻塞,0立即返回,>0指定毫秒
//成功返回就绪的文件描述符数量,时间到了返回0,出错返回-1