ローカルのlinuxホストのTCPソケットがリモートホストと接続状態にあるとします。ローカルホストは、epoll_waitを使用して、リモートホストとのソケットのイベントを通知しています。リモートホストが呼び出しした場合Epollとリモートの一方向シャットダウン
:
shutdown(s,SHUT_WR);
をその接続されたソケットに送信することが行われて示すために、どのようなイベント(複数可)そのソケットのローカルホスト上のリターンをれるepoll_waitでしょうか?
私はEPOLLINが常に返されると仮定しています。その後のrecv呼び出しは、リモート側が送信を完了したことを示すために0を返します。
EPOLLHUPまたはEPOLLRDHUPはどうですか? (そして、これら2つのイベントの違いは何ですか?)
さらにEPOLLERR?
リモートホストが「シャットダウン」ではなく「閉じる」を呼び出す場合は、上記のいずれかの答えが変わりますか?
ここでの動作に関する質問が多かったので、私はこれらのやりとりについて詳しく説明しました:https://medium.com/where-the-flamingcow-roams/down-the-epoll-rabbit-hole-5c0447cb6329 – flamingcow