บน http://linux.die.net/man/2/select ใต้ BUGS มีการกล่าวถึงว่าการเรียกระบบแบบเลือกบางครั้งอาจตั้งค่า FD ให้พร้อมอย่างปลอมๆ และการเรียกการอ่านครั้งต่อไปจะกลับมาเป็น 0 ข้อความอธิบายตัวอย่างหนึ่งตัวอย่าง (เช็คซัมผิด) แต่ฉันคิดว่าจะมีเหตุผลอื่นด้วย (ไม่เช่นนั้นก็จะมี แก้ไขปัญหานี้)
ความคิดใด ๆ ที่อาจเป็นสาเหตุอื่น ๆ ที่ทำให้ Select คืน FD พร้อมปลอมแปลง
และสิ่งนี้ใช้ได้กับระบบปฏิบัติการอื่นด้วย ฉันกำลังถามเกี่ยวกับ Linux
ส่วนที่เกี่ยวข้องสำหรับลิงค์ด้านบน:
ภายใต้ Linux select() อาจรายงานตัวอธิบายไฟล์ซ็อกเก็ตว่า "พร้อมสำหรับการอ่าน" ในขณะที่บล็อกการอ่านตามมา สิ่งนี้อาจเกิดขึ้นเมื่อข้อมูลมาถึงแต่หลังจากการตรวจสอบมีการตรวจสอบที่ไม่ถูกต้องและถูกละทิ้ง อาจมีสถานการณ์อื่น ๆ ที่ตัวอธิบายไฟล์ถูกรายงานว่าพร้อมแล้ว ดังนั้น การใช้ O_NONBLOCK กับซ็อกเก็ตที่ไม่ควรปิดกั้นอาจปลอดภัยกว่า