Trong mọi ví dụ và cuộc thảo luận mà tôi chạy qua trong ngữ cảnh lập trình BSD socket, có vẻ như cách được khuyến nghị để đặt bộ mô tả tệp thành chế độ I / O không chặn là sử dụng O_NONBLOCK
cờ fcntl()
, ví dụ:
int flags = fcntl(fd, F_GETFL, 0);
fcntl(fd, F_SETFL, flags | O_NONBLOCK);
Tôi đã lập trình mạng trong UNIX hơn mười năm và luôn sử dụng lệnh FIONBIO ioctl()
gọi để làm điều này:
int opt = 1;
ioctl(fd, FIONBIO, &opt);
Không bao giờ thực sự suy nghĩ nhiều về lý do tại sao. Chỉ cần học nó theo cách đó.
Có ai có bất kỳ bình luận về giá trị tương ứng có thể có của người này hay người khác không? Tôi tưởng tượng locus khả năng di chuyển hơi khác nhau, nhưng không biết ở mức độ nào vì ioctl_list(2)
không nói về khía cạnh đó của các ioctl
phương pháp riêng lẻ .