3

在我的程序中,我需要检查非阻塞套接字中的 sendfile() 操作是否完成。怎么可能呢?

检查文档并在互联网上搜索后,我无法找到如何去做

4

1 回答 1

6

它的工作原理非常类似于send():如果套接字设置为O_NONBLOCK并且操作将阻塞,则sendfile()立即返回并设置errnoEAGAIN。在这种情况下,您必须等待一段时间,然后再试一次(可能使用类似select()知道何时准备好的功能)。

另请记住,即使成功,它也可能不会在单个函数调用中写入您请求的所有字节。始终检查返回值:

如果传输成功,则返回写入 out_fd 的字节数。出错时,返回 -1,并适当设置 errno。

您还可以查看sendfile() 的手册页

于 2009-12-20T14:54:52.787 回答