提问人:user877329 提问时间:5/16/2023 更新时间:5/16/2023 访问量:39
什么是EOF的阻止行为
What is blocking behaviour at EOF
问:
在检测到 EOF 之前,对已到达 EOF 的文件描述符(在本例中为非阻塞套接字)的读取是否有可能阻塞?
如以下顺序所示:
read
返回 -1 并设置为 orerrno
EWOULDBLOCK
EAGAIN
read
返回 0,表示已达到 EOF
或
如果它正在等待数据,它会始终看起来像这样吗:
read
返回 -1 并设置为 orerrno
EWOULDBLOCK
EAGAIN
read
返回一个值> 0read
返回 0,表示已达到 EOF
也就是说,是否意味着将有更多可用数据,或者当文件描述符再次可用时是否有可能没有更多数据?EWOULDBLOCK
答:
1赞
Steffen Ullrich
5/16/2023
#1
...EWOULDBLOCK 是否意味着将有更多可用数据
不。EWOULDBLOCK只说目前没有可用的数据。它不会对未来的流量做出任何声明,即是否会到达新数据或连接是否会关闭。
如果连接被对等体关闭,并且本地操作系统接收并完全处理了 FIN,则不会返回 EWOULDBLOCK,而是会向 EOF 发出信号(假设到目前为止的所有数据都已读取)。recv
评论