epoll
函数
epoll_creat
#include <sys/epoll.h>
int epoll_create(int size); //size为epoll实例大小(仅供参考)
创建一个内核事件表,成功时返回epoll文件描述符,失败时返回-1。
需要终止时,需要调用close函数
epoll_ctl
#include <sys/epoll.h>
int epoll_stl(int epfd, int op, int fd, struct epoll_event * event);
成功时返回0,失败时返回-1.
- epfd 用于注册监视对象的epoll例程的文件描述符
- op 用于指定监视对象的添加(EPOLL_STL_ADD),删除(EPOLL_CTL_DEL)或更改(EPOLL_CTL_MOD)等操作
- fd 需要注册的监视对象文件描述符
- event 监视对象的时间类型,暂且只用EPOLLIN(需要读取数据的情况)
理解:
epoll_ctl(A, EPOLL_CTL_ADD, B, C);
参数EPOLL_CTL_ADD意味着“添加”,因此以上语句意味着“epoll例程A中注册文件描述符B,主要目的是监视参数C中的事情”。
epoll_ctl(A, EPOLL_CTL_DEL, B, NULL);
参数EPOLL_CTL_DEL意味着“删除”,因此以上语句意味着“从epoll例程A中删除文件描述符B"。
epoll_wait
#include <sys/epoll.h>
int epoll_wait(int epfd, struct epoll_event * events, int maxevent, int timeout);
成功时返回发生事件的文件描述符,失败时返回-1.
- epfd 表示事件发生监视范围的epoll例程的文件描述符
- events 保存发生事件的文件描述符集合的结构体地址值。
- maxevents 第二个参数中可以保存的最大事件数
- timeout 以1/1000秒为单位的等待时间,传递-1时,一直等待直到发生事件。