sendfile()
可用于将数据从"file"描述符传输到“套接字”描述符,以便从机器 A 获取数据到机器 B。是否可以获取数据在从“套接字”描述符到具有类似零拷贝语义的文件的接收端?我认为 sendfile()
在这里没有帮助,因为 sendfile()
需要数据源是“页面/缓冲区”缓存。我的理解正确吗? splice()
能在这种情况下提供帮助吗?
最佳答案
你对 sendfile
的限制是正确的。是的,splice
可以提供帮助,但这并非微不足道:splice
要求源或目标文件描述符中至少有一个是管道。所以你不能直接从一个套接字拼接
到一个普通的文件描述符。
从概念上讲,您可以做的是:
重复最后的步骤,直到读取完所有数据。
关于linux - 理解 sendfile() 和 splice(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8626263/