Di http://linux.die.net/man/2/select, di bawah BUGS Di bagian tersebut disebutkan bahwa panggilan sistem pemilihan kadang-kadang mungkin secara palsu mengatur FD siap dan panggilan baca berikutnya akan mengembalikan 0. Teks tersebut menjelaskan salah satu contoh tersebut (checksum salah) tetapi saya berasumsi akan ada alasan lain juga (jika tidak, mereka akan melakukannya) memperbaiki ini).
Adakah gagasan apa yang menyebabkan Select mengembalikan FD yang siap secara palsu.
dan apakah ini juga berlaku untuk OS lain. Saat ini saya bertanya tentang Linux.
Bagian yang Relevan untuk tautan di atas:
Di Linux, select() dapat melaporkan deskriptor file soket sebagai "siap untuk dibaca", namun tetap ada blok baca berikutnya. Hal ini misalnya bisa terjadi ketika data sudah sampai namun saat diperiksa checksumnya salah dan dibuang. Mungkin ada keadaan lain di mana deskriptor file dilaporkan palsu sebagai siap. Oleh karena itu, mungkin lebih aman menggunakan O_NONBLOCK pada soket yang tidak boleh diblokir.