splice()/tee() 是否可以用于套接字,而不仅仅是管道?

rob*_*nbb 5 linux pipe

在 Linux 上,系统调用 splice(2) 和 tee(2) 用于在两个文件描述符之间传输数据。根据文档,一个或两个文件描述符必须是管道。为什么?这可以与套接字一起使用吗?它目前是否有效,或者是否需要修改内核?

gee*_*aur 1

现在他们只是将管道缓冲区拼接在一起;套接字缓冲区(在 Linux 上)是不同的动物,并将内核网络拖入其中。将其限制为AF_LOCAL套接字会简化实现,但代价是验证 \xe2\x80\x94\xc2\xa0 变得复杂,并且您可能仍然需要通过网络缓冲区管理子系统而不是从匿名文件缓冲区来处理它们的分配和映射。

\n