程式界面
int epoll_create(int size);
建立epoll
物件并回传其描述子。
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
将要交由核心管控的档案描述子加入epoll物件并设定触发条件。
int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);
等待已注册之事件被触发或计时终了。
触发模式
epoll
提供edge-triggered及level-triggered模式。在edge-trigger模式中,epoll_wait
仅会在新的事件首次被加入epoll
物件时返回;于level-triggered模式下,epoll_wait
在事件状态未变更前将不断被触发。
举例来说,倘若有一个已经于epoll
注册之管线接获资料,epoll_wait
将返回,并发出资料读取的信号。现假设缓冲区的资料仅有部分被读取并处理,在level-triggered模式下,任何对epoll_wait
之呼叫都将即刻返回,直到缓冲区中的资料全部被读取;然而,在edge-triggered的情境下,epoll_wait
仅会于再次接收到新资料(亦即,新资料被写入管线)时返回。