作为服务器,我想从非阻塞客户端套接字读取,然后写入文件。
根据sendfile的手册页,如果errno设置为EAGAIN,那么这仅表示,如果输出文件描述符设置为非阻塞,则调用sendfile将块。
也就是说,sendfile写入的底层调用会阻塞。
是否有使用sendfile以便errno为EAGAIN,如果读取会阻止?
答案 0 :(得分:2)
当然可以。
将select()
库函数与您的读取描述符一起使用,您可以通过EWOULDBLOCK
检查errno
。如果已设置,则读取将阻止。
您无法通过查看sendfile()
电话上的内容来查看阅读是否会阻止。