1

私が epoll_create1() で、EPOLLIN | にのみ関心があるとしましょう。ソケット1個用のエポレット。

そのソケットで epoll_wait() > 1 (timeout=-1 と仮定) になり、イベントが EPOLLIN になる可能性はありますか?

それとも、複数のパケットがあっても epoll_wait() は 1 を返しますか?

前もって感謝します。

4

2 に答える 2

2

epoll_waitドキュメントによると、「I/O の準備ができているファイル記述子の数」に等しいイベント数を返します。そのため、登録したファイル記述子の数より多くのイベントを取得することはできません。

于 2013-08-10T14:28:46.907 に答える
1

これらのドキュメントによると、epoll_wait「準備ができている」fdの数を返す必要があります。fd を 1 つしか渡さない場合は、1 つしか返されないはずです。これは確かにepoll_wait実装のバグであり、しばらく前から存在しているので、かなりよくテストされていると思います (fd に取り組んでいる場合を除く)。完全に新しいアーキテクチャまたは C ライブラリのベータ版など)。

また、タイムアウト = 0 であり、-1 ではありません。

于 2013-08-10T14:31:05.897 に答える