Si supponga che un socket TCP sull'host Linux locale sia in uno stato connesso con un host remoto. L'host locale sta utilizzando epoll_wait per ricevere una notifica degli eventi sul socket con l'host remoto.Epoll e arresto a 1 via remoto
Se l'host remoto dovesse chiamare:
shutdown(s,SHUT_WR);
sul suo socket connesso per indicare che è fatto trasmettere, quale evento (s) sarà epoll_wait ritorno sull'host locale per la sua presa di corrente?
Suppongo che EPOLLIN venga sempre restituito e una chiamata recv successiva restituisca 0 per indicare che il lato remoto ha terminato la trasmissione.
Che dire di EPOLLHUP o EPOLLRDHUP? (E qual è la differenza tra questi due eventi)?
O addirittura EPOLLERR?
Se l'host remoto chiama "close" anziché "shutdown", la risposta a una delle modifiche precedenti?
Ho avuto altre domande sul comportamento qui, quindi ho effettuato un'immersione dettagliata in queste interazioni: https://medium.com/where-the-flamingcow-roams/down-the-epoll-rabbit-hole-5c0447cb6329 – flamingcow