sendfileLinux 内核版本 2.1 提供了一个专门发送文件的系统调用函数 sendfile(),函数形式如下:
#include <sys/socket.h>ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);参数说明:
- 前2个参数分别是目的端和源端的文件描述符,
- 后2个参数是源端的偏移量和复制数据的长度,返回值是实际复制数据的长度 。
其次,sendfile可以直接把内核缓冲区里的数据拷贝到 socket 缓冲区里,不再拷贝到用户态,优化后只有 2 次上下文切换,和 3 次数据拷贝 。如下图:

文章插图
尽管如此,我们还是又数据拷贝,这不符合我们的标题目标 。如果网卡支持 SG-DMA(
推荐阅读
- 高质量发展|求职者都带简历了,为什么HR还要让你填表?一文讲透了
- 辟谣:猫咪的语言是喵?教你读懂“猫言猫语”,让你明白猫的内心
- 有糖尿病究竟还能不能吃水果了?怎么吃比较合理?医生一文讲清
- 庄家洗盘洗多久才拉升?散户还想一卖就飞吗?一文掌握洗盘特征!
- 到底是普通痣?还是黑色素瘤?医生一文助您自检
- 香港24小时丨香港9月1日发生了什么?一文速览
- 教你读懂医生的职称 研究员职称
- 万字长文读懂直播:很多人没明白直播带货到底要做什么?
- Win10如何修改电脑用户名? 电脑用户名
- 电脑分辨率多少合适 电脑分辨率
