http://linux.die.net/man/2/selectのBUGSセクションでは、selectシステムコールによってFDがレディ状態になり、後続のreadコールが0を返すことがあることが記載されています。私は他の理由もあると仮定しています(そうでなければ、これを修正したでしょう)。Select Systemコールの擬似準備通知
SelectがFDを偽りに返す原因は何でしょうか。
これは他のOSにも当てはまります。私は現在、Linuxについて尋ねています。上記リンクの
関連セクション:Linuxでは
は、選択()、しばらくそれにもかかわらず 後続の読取りブロック「を 読書のための準備」として ソケットファイルディスクリプタを報告することがあります。これは、 に到着したときに、 の例が発生する可能性がありますが、検査時には チェックサムが間違っていて破棄されます。 記述子が として疑似的に報告されるその他の状況である可能性があります。 したがって、 O_NONBLOCKを使用して、 ブロックではないはずのソケットには安全かもしれません。