3
UNIX非阻塞I / O:O_NONBLOCK与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方法的这一方面。