企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## sendfile - [Sendfile](http://man7.org/linux/man-pages/man2/sendfile.2.html)是Linux实现的系统调用 - 可以通过避免文件在内核态和用户态的拷贝来优化文件传输的效率 其中大名鼎鼎的分布式消息队列服务Kafka就使用sendfile来优化效率,具体用法可参见其[官方文档](http://kafka.apache.org/documentation.html) ## 实现方式 在普通进程中,要从磁盘拷贝数据到网络,其实是需要通过系统调用,进程也会反复在用户态和内核态切换,频繁的数据传输在此有效率问题 ## 应用 ### go 的 io.copy 当我们需要响应请求并返回文件时,我们可以使用`io.Copy()`,因为底层使用了上面提及的`splice()`和`sendfile()`系统调用