sendfile()
可用于将数据从“文件”描述符传输到“套接字”描述符,以便从机器A到机器B获取数据。是否可以从接收端获取数据“套接字”描述符到具有类似零拷贝语义的文件?我认为sendfile()
在这里没有帮助,因为sendfile()
需要数据源是“页面/缓冲区”缓存。我的理解是否正确? splice()
可以帮助解决这种情况吗?
答案 0 :(得分:12)
你对sendfile
的限制是正确的。是的,splice
可以提供帮助,但这并非易事:splice
要求至少有一个源文件描述符或目标文件描述符是管道。所以你不能直接splice
从套接字到普通文件描述符。
从概念上讲,你可以做的是:
重复上一步,直到读完所有数据。