【发布时间】:2021-09-03 10:39:30
【问题描述】:
如果我使用fcntl(sockfd, F_SETFL, O_NONBLOCK); 使 TCP 套接字描述符成为非阻塞式,那么这是否会使所有后续套接字 API 像 read()/listen()/accept()/ etc.. 一样也非阻塞式?
【问题讨论】:
-
使这些套接字 API 调用非阻塞正是 O_NONBLOCK 的重点。你认为 O_NONBLOCK 还做了什么?
-
@user207421 ,@Steffen Ullrich 谢谢。好吧,我想知道我什么时候看到了一个执行 O_NONBLOCK 并后来使用
recv(sd, buffer, size, MSG_DONTWAIT)的代码。如果程序员试图解决一些极端情况,我想到了这个问题。 -
假设他使用的是“带大括号”的方法 ;-)
MSG_DONTWAIT适用于您没有设置O_NONBLOCK和你只想要一个非阻塞的 `recv() 单独。坦率地说,很难看出这一点,我已经 40 年没用过了。
标签: sockets network-programming ipc