ในทุกตัวอย่างและการสนทนาที่ฉันใช้ในบริบทของการเขียนโปรแกรมซ็อกเก็ต BSD ดูเหมือนว่าวิธีที่แนะนำในการตั้งค่าตัวอธิบายไฟล์เป็นโหมด I / O ที่ไม่ปิดกั้นคือการใช้O_NONBLOCK
แฟล็กเพื่อfcntl()
เช่น
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
ฉันทำการเขียนโปรแกรมเครือข่ายใน UNIX มานานกว่าสิบปีแล้วและใช้การFIONBIO ioctl()
โทรเพื่อทำสิ่งนี้มาโดยตลอด:
int opt = 1;
ioctl(fd, FIONBIO, &opt);
ไม่เคยคิดมากว่าทำไม เพิ่งเรียนรู้วิธีนี้
ใครมีความเห็นเกี่ยวกับข้อดีของข้อใดข้อหนึ่งหรือไม่? ฉันคิดว่าโลคัสการพกพานั้นแตกต่างกันบ้าง แต่ไม่รู้ว่าioctl_list(2)
มันไม่ได้พูดถึงแง่มุมของแต่ละioctl
วิธี