版权所有 © 2014 tutorialspoint
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
in_fd 应为打开以供读取的文件描述符,而out_fd 应为打开以供写入的描述符。
如果offset 不为 NULL,则它指向一个变量,该变量保存sendfile() 将从中读取数据的in_fd 的文件偏移量。当sendfile() 返回时,此变量将设置为读取的最后一个字节后的字节的偏移量。如果offset 不为 NULL,则sendfile() 不会修改in_fd 的当前文件偏移量;否则,当前文件偏移量将被调整以反映从in_fd 读取的字节数。
count是要在文件描述符之间复制的字节数。
目前(Linux 2.6.9):in_fd必须对应于支持mmap() 类操作的文件(即,它不能是套接字);并且out_fd必须引用套接字。
如果sendfile() 使用EINVAL或ENOSYS失败,应用程序可能希望回退到read(2)/write(2)。
在Linux 2.4和更早版本中,out_fd可以引用常规文件,并且sendfile()会更改该文件的当前偏移量。
其他 Unix 系统使用不同的语义和原型实现sendfile()。不应在可移植程序中使用它。
open (2)
mmap (2)
socket (2)
广告