假設本地linux主機上的TCP套接字與遠程主機處於連接狀態。本地主機使用epoll_wait通知遠程主機套接字上的事件。Epoll和遠程單向關機
如果遠程主機分別叫:
shutdown(s,SHUT_WR);
其連接端口,以指明它完成發射,什麼事件(S)將epoll_wait本地主機爲它的插座上的回報?
我假設EPOLLIN總是會返回並且隨後的recv調用將返回0以指示遠程端已完成傳輸。
EPOLLHUP或EPOLLRDHUP呢? (這兩個事件有什麼區別)?
甚至EPOLLERR?
如果遠程主機調用「關閉」而不是「關閉」,上述任何一個的答案是否會改變?
我對這裏的行爲有更多疑問,所以我詳細介紹了這些交互:https://medium.com/where-the-flamingcow-roams/down-the-epoll-rabbit-hole-5c0447cb6329 – flamingcow 2016-02-24 18:56:47