epoll_wait()とリスナーソケットの間で次の相互作用が見られます。リスナー ソケットを作成するための一連のイベントは次のとおりです。
- 電話
socket() - 電話
bind() - 呼び出し
fcntl()てノンブロッキングに設定 - と
epoll_ctl()_EPOLL_CTL_ADD_EPOLLET | EPOLLONESHOT | EPOLLIN - 電話
listen()
epoll_wait()このソケットやその他のソケットを呼び出すバックグラウンド スレッドがあり、手順 4 と 5 の間に呼び出しが行われるEPOLLHUPと、リスナー ソケットのイベントが受信されます。シーケンスを次のように変更します。
- 電話
socket() - 電話
bind() - 呼び出し
fcntl()てノンブロッキングに設定 - 電話
listen() - と
epoll_ctl()_EPOLL_CTL_ADD_EPOLLET | EPOLLONESHOT | EPOLLIN
EPOLLINはこの問題を解決しますが、接続は確立されているが、リスナー ソケットのイベントが受信されないという誤ったエラーが表示されるようになりました。
代わりにレベルトリガーモードを使用できることは理解していますが、これをエッジトリガーモードで機能させたいと考えています。
問題が何であるかについて何か考えはありますか?