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,不管有无任何处理动作,事件只触发一次,后面即没有任何动静