epoll

4. 关闭文件描述符

关闭一个文件描述符会使它从epoll集中自动删除,前提是对应文件表项的引用计数递减为0

此时,close(fd)等价于epoll_ctl(epfd, EPOLL_CTL_DEL, fd, &ev0);

同理,对一个套接字描述符调用close(),若该套接字引用计数为0,则epoll将不再监听该套接字,该套接字上已触发的所有事件即刻删除



3. 非阻塞connect


3.1 RST

非阻塞式connect收到rst时,触发的事件类型如下:

CentOS 6.5

LT:事件类型为EPOLLIN | EPOLLERR | EPOLLHUP,事件持续触发。EPOLLERR直到对套接字调用recv即消失;EPOLLIN | EPOLLHUP直到关闭套接字,否则一直存在

ET:事件类型为EPOLLIN | EPOLLERR | EPOLLHUP,不管有无任何处理动作,事件只触发一次

CentOS 7.2

LT:事件类型为EPOLLIN | EPOLLOUT | EPOLLERR | EPOLLHUP,事件持续触发。EPOLLERR直到对套接字调用recv即消失;EPOLLIN |EPOLLOUT | EPOLLHUP直到关闭套接字,否则一直存在

ET:事件类型为EPOLLIN | EPOLLOUT | EPOLLERR | EPOLLHUP,不管有无任何处理动作,事件只触发一次



2. 连接中的套接字收到RST

LT:事件类型为EPOLLIN | EPOLLERR | EPOLLHUP,事件持续触发。EPOLLERR直到对套接字调用recv即消失;EPOLLIN | EPOLLHUP直到关闭套接字,否则一直存在

ET:事件类型为EPOLLIN | EPOLLERR | EPOLLHUP,不管有无任何处理动作,事件只触发一次



1. 套接字收到FIN

LT:事件类型为EPOLLIN,不管有没有对该套接字调用recv,事件持续触发,直到套接字被关闭

ET:事件类型为EPOLLIN,不管有无任何处理动作,事件只触发一次,后面即没有任何动静

原文地址:https://www.cnblogs.com/chaikefusibushiji/p/7475579.html