[英] UNIX nonblocking I/O: O_NONBLOCK vs. FIONBIO
在我在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
种方法的这一方面.