为什么sendfile不检查从输入描述符读取是否会阻塞?

时间:2017-12-01 17:56:41

标签: c server errno sendfile

作为服务器,我想从非阻塞客户端套接字读取,然后写入文件。

根据sendfile的手册页,如果errno设置为EAGAIN,那么这仅表示,如果输出文件描述符设置为非阻塞,则调用sendfile将块。

也就是说,sendfile写入的底层调用会阻塞。

是否有使用sendfile以便errno为EAGAIN,如果读取会阻止?

1 个答案:

答案 0 :(得分:2)

当然可以。

select()库函数与您的读取描述符一起使用,您可以通过EWOULDBLOCK检查errno。如果已设置,则读取将阻止。

您无法通过查看sendfile()电话上的内容来查看阅读是否会阻止。