10

http://linux.die.net/man/2/selectBUGS セクションでは、select システム コールが誤って FD をレディに設定し、その後の read コールで 0 が返されることがあると記載されています。 (間違ったチェックサム)しかし、他の理由もあると思います(そうでなければ、彼らはこれを修正したでしょう).

Select が誤って FD の準備ができていることを返す他の原因について考えてみてください。

これは他のOSにも当てはまりますか。現在Linuxについて質問しています。

上記のリンクに関連するセクション:

Linux では、select() がソケット ファイル記述子を「読み取り準備完了」と報告する場合がありますが、その後の読み取りはブロックされます。これは、たとえば、データが到着したが、検査時に間違ったチェックサムがあり、破棄された場合に発生する可能性があります。ファイル記述子が誤って準備完了と報告される状況が他にもある可能性があります。したがって、ブロックしてはならないソケットでは O_NONBLOCK を使用する方が安全かもしれません。

4

1 に答える 1

1

これは正確な答えではありませんが、epoll を見ると、これらの問題は解決されているようです。

そして、netdevでこのメッセージを信頼できる場合、彼らは少なくともpoll()とselect()でも修正しようとしました(他のものを壊しています)。

したがって、このバグは予見可能な将来には関係がないようです。

于 2011-04-01T08:25:47.780 に答える