【发布时间】:2021-02-06 05:06:09
【问题描述】:
是否有任何系统调用可以将数据从套接字复制到文件?我查看了 sendfile 系统调用,发现 input_fd 必须是文件描述符,所以我想知道在从套接字接收数据并将其存储在文件中时,应用程序是否可以利用任何系统调用进行零复制?
【问题讨论】:
标签: operating-system system-calls
是否有任何系统调用可以将数据从套接字复制到文件?我查看了 sendfile 系统调用,发现 input_fd 必须是文件描述符,所以我想知道在从套接字接收数据并将其存储在文件中时,应用程序是否可以利用任何系统调用进行零复制?
【问题讨论】:
标签: operating-system system-calls
(这看起来像 Understanding sendfile() and splice() 的副本)这个问题提问者在这里想知道从套接字读取的数据是否可以零复制到文件中,并且提到 io_uring 强烈表明提问者特别感兴趣Linux。
简而言之,可以通过在 Linux 上使用splice(2) 从套接字接收并输出到文件,而不必制作不必要的重复副本,但这并非微不足道 - 套接字必须连接到管道的一端和文件的描述符到另一端。由于 5.7 Linux 内核 io_uring also supports a splice operation 所以它也可以通过管道从套接字到文件进行零复制。
【讨论】: