1、listen fd,有新連接請求,觸發(fā)EPOLLIN。
2、對端發(fā)送普通數(shù)據(jù),觸發(fā)EPOLLIN。
3、帶外數(shù)據(jù),只觸發(fā)EPOLLPRI。
4、對端正常關(guān)閉(程序里close(),shell下kill或ctr+c),觸發(fā)EPOLLIN和EPOLLRDHUP,但是不觸發(fā)EPOLLERR和EPOLLHUP。
關(guān)于這點(diǎn),以前一直以為會觸發(fā)EPOLLERR或者EPOLLHUP

。
再man epoll_ctl看下后兩個事件的說明,這兩個應(yīng)該是本端(server端)出錯才觸發(fā)的。
5、對端異常斷開連接(只測了拔網(wǎng)線),沒觸發(fā)任何事件。
附man:
EPOLLIN
The associated file is available for read(2) operations.
EPOLLOUT
The associated file is available for write(2) operations.
EPOLLRDHUP
Stream socket peer closed connection, or shut down writing half
of connection. (This flag is especially useful for writing sim-
ple code to detect peer shutdown when using Edge Triggered moni-
toring.)
EPOLLPRI
There is urgent data available for read(2) operations.
EPOLLERR
Error condition happened on the associated file descriptor.
epoll_wait(2) will always wait for this event; it is not neces-
sary to set it in events.
EPOLLHUP
Hang up happened on the associated file descriptor.
epoll_wait(2) will always wait for this event; it is not neces-
sary to set it in events.
EPOLLET
Sets the Edge Triggered behavior for the associated file
descriptor. The default behavior for epoll is Level Triggered.
See epoll(7) for more detailed information about Edge and Level
Triggered event distribution architectures.
EPOLLONESHOT (since Linux 2.6.2)
Sets the one-shot behavior for the associated file descriptor.
This means that after an event is pulled out with epoll_wait(2)
the associated file descriptor is internally disabled and no
other events will be reported by the epoll interface. The user
must call epoll_ctl() with EPOLL_CTL_MOD to re-enable the file
descriptor with a new event mask.