mmap + write
mmap() 系统调用函数会直接把内核缓冲区里的数据「映射」到用户空间
操作系统和应用程序能够共享此缓冲区,内核不需要从应用程序拷贝数据到socket 缓存区域
sendfile
在 Linux 内核版本 2.1 中,提供了一个专门发送文件的系统调用函数
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
它的前两个参数分别是目的端和源端的文件描述符,后面两个参数是源端的偏移量和复制数据的长度,返回值是实际复制数据的长度。