### 系统调用sendfile
[Sendfile](http://man7.org/linux/man-pages/man2/sendfile.2.html)是Linux实现的系统调用,可以通过避免文件在内核态和用户态的拷贝来优化文件传输的效率。
其中大名鼎鼎的分布式消息队列服务Kafka就使用sendfile来优化效率,具体用法可参见其[官方文档](http://kafka.apache.org/documentation.html)。
### 优化策略
在普通进程中,要从磁盘拷贝数据到网络,其实是需要通过系统调用,进程也会反复在用户态和内核态切换,频繁的数据传输在此有效率问题。因此我们必须意识到Linux给我们提供了sendfile这样的系统调用,可以提高进程的数据传输效率。
- 前言
- 致谢
- 概述
- 使用代码
- 使用Docker
- 进程基础
- 进程是什么
- Hello World
- PID
- PPID
- 使用PID
- 进程名字
- 进程参数
- 输入与输出
- 并发与并行
- 进程越多越好
- 进程状态
- 退出码
- 进程资源
- 死锁
- 活锁
- POSIX
- Nohup
- 运行进程
- Go编程实例
- 衍生新进程
- 执行外部程序
- 复制进程
- 进程进阶
- 文件锁
- 孤儿进程
- 僵尸进程
- 守护进程
- 进程间通信
- 信号
- Linux系统调用
- 文件描述符
- Epoll
- 共享内存
- Copy On Write
- Cgroups
- Namespaces
- 项目实例Run
- 项目架构
- 代码实现
- 注意事项
- 创建目录权限
- 捕获SIGKILL
- Sendfile系统调用
- 后记
- 参考书籍
- 项目学习
- 再次感谢