可以使用 “ man epoll_ctl” 来查看函数手册。
1、EPOLLIN
- 有新的连接请求,触发 EPOLLIN;
- 读取(接收)对端发送的数据,触发 EPOLLIN;
- 对端正常关闭(程序里 close(),shell 下 kill 或 ctl+c),触发 EPOLLIN(使用2.6.17之前版本内核的系统中)或者触发 EPOLLIN | EPOLLRDHUP(使用2.6.17之后版本内核的系统中);
- 对端异常断开连接(比如拔网线),没触发任何事件;
2、EPOLLOUT
- 写数据,触发 EPOLLOUT;
3、EPOLLPRI
- 读取的数据中有带外数据,只触发 EPOLLPRI,不触发 EPOLLIN;
4、EPOLLERR
- 关联文件描述符发生错误,会触发 EPOLLERR;
- 当管道的读端已关闭时,也会触发 EPOLLERR;
- 没有必要在事件中设置它;
5、EPOLLHUP
- 读写都关闭时,触发 EPOLLSHUP;
6、EPOLLET
- 为关联的文件描述符设置边缘触发行为,不设置的话,epoll 默认为水平触发;
7、EPOLLONESHOT
- 设置关联文件描述符的一次性行为,即一个 socket 只能同时被一个线程(进程)操作时,将事件设置为 EPOLLONESHOT;