Suponga que un socket TCP en el host local de Linux está en un estado conectado con un host remoto. El host local está utilizando epoll_wait para recibir notificaciones de eventos en el socket con el host remoto.Epoll y apagado unidireccional remoto
Si el host remoto llamara:
shutdown(s,SHUT_WR);
en su conector conectado para indicar que se realiza la transmisión, lo que evento (s) se epoll_wait retorno en el host local para su zócalo?
Supongo que EPOLLIN siempre se devolverá y una llamada recv posterior devolverá 0 para indicar que el lado remoto ha terminado de transmitir.
¿Qué pasa con EPOLLHUP o EPOLLRDHUP? (¿Y cuál es la diferencia entre estos dos eventos)?
¿O incluso EPOLLERR?
Si el host remoto llama "cerrar" en lugar de "apagar", ¿cambia la respuesta a cualquiera de los anteriores?
Tenía más preguntas sobre el comportamiento aquí, así que hice una inmersión detallada en estas interacciones: https://medium.com/where-the-flamingcow-roams/down-the-epoll-rabbit-hole-5c0447cb6329 – flamingcow