私が epoll_create1() で、EPOLLIN | にのみ関心があるとしましょう。ソケット1個用のエポレット。
そのソケットで epoll_wait() > 1 (timeout=-1 と仮定) になり、イベントが EPOLLIN になる可能性はありますか?
それとも、複数のパケットがあっても epoll_wait() は 1 を返しますか?
前もって感謝します。
epoll_wait
ドキュメントによると、「I/O の準備ができているファイル記述子の数」に等しいイベント数を返します。そのため、登録したファイル記述子の数より多くのイベントを取得することはできません。
これらのドキュメントによると、epoll_wait
「準備ができている」fdの数を返す必要があります。fd を 1 つしか渡さない場合は、1 つしか返されないはずです。これは確かにepoll_wait
実装のバグであり、しばらく前から存在しているので、かなりよくテストされていると思います (fd に取り組んでいる場合を除く)。完全に新しいアーキテクチャまたは C ライブラリのベータ版など)。
また、タイムアウト = 0 であり、-1 ではありません。