sendfile()可以用来将数据从“文件”描述符传输到“套接字”描述符,以便从机器A获得数据到机器B。在接收端可以从“套接字”描述符获取数据到具有类似零拷贝语义的文件吗?我认为sendfile()在这里没有帮助,因为sendfile()需要数据源为“页面/缓冲区”缓存。我的理解正确吗?在这种情况下,splice()能提供帮助吗?
发布于 2011-12-24 19:08:33
对于sendfile在这方面的局限性,您是正确的。是的,splice可以提供帮助,但这并不简单:splice要求至少有一个源文件或目标文件描述符是管道。因此,您不能直接从套接字到普通的文件描述符进行splice。
从概念上讲,要使它发挥作用,您可以做的是:
normally
pipe(2)
splicesplice also的文件。
重复最后的步骤,直到读取所有数据。
Zero-Copy in Linux with sendfile() and splice()实现了这种技术。
https://stackoverflow.com/questions/8626263
复制相似问题