Pemberitahuan kesiapan palsu untuk Panggilan Sistem Pilih

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.


person Aditya Sehgal    schedule 13.05.2009    source sumber


Jawaban (1)


Ini bukan jawaban yang tepat, tetapi jika dilihat dari epoll, masalah ini tampaknya dapat diselesaikan.

Dan jika saya dapat mempercayai pesan ini di netdev, setidaknya mereka mencoba memperbaikinya di poll() dan select() juga (melanggar hal-hal lain).

Oleh karena itu, bug ini tampaknya tidak relevan di masa mendatang.

person hynek    schedule 01.04.2011