2

kqueue() を使用する場合、ファイル記述子に O_NONBLOCK を設定する必要がありますか? 言い換えれば、kqueue() は、O_NONBLOCK が設定されているかどうかに関係なく、準備完了のファイル記述子に対する次の I/O 操作がブロックされないことを保証しますか?

4

2 に答える 2

3

kqueue() を使用する場合、ファイル記述子に O_NONBLOCK を設定する必要がありますか?

いいえ。

言い換えれば、kqueue() は、O_NONBLOCK が設定されているかどうかに関係なく、準備完了のファイル記述子に対する次の I/O 操作がブロックされないことを保証しますか?

うん。

于 2012-10-26T10:17:39.367 に答える
2

あなたはそれをする必要が無い。ただし、私は通常、健全性チェックとして行います。これにより、read() などの操作で -1 が返され、errno が EWOULDBLOCK に設定されます。不明な理由で read() 呼び出しがブロックされる (したがって、プログラムがフリーズする) よりも、EWOULDBLOCK を取得して、kqueue の実装にバグがあることを知りたいです。

于 2013-12-06T03:22:31.600 に答える