0

sendfile 的问题是它不能使用文件 fds 复制两个文本文件。错误是 EINVAL。// 描述符无效或被锁定,或类似 mmap() 的操作不适用于 in_fd。

这到底是什么意思?

从 sendfile ( man sendfile ) 的手册页中,我找到了这个语句。不确定是否可以复制两个常规文件。

目前(Linux 2.6.9):in_fd,必须对应一个支持类似 mmap() 操作的文件(即,它不能是套接字);并且 out_fd 必须引用一个套接字。

   Applications may wish to fall back to read(2)/write(2) in the case where sendfile() fails with EINVAL or ENOSYS.
4

1 回答 1

1

背后的想法sendfile()是通过套接字快速发送文件(想想 Web 服务器)。可以mmap()编辑常规文件,但不是套接字,因此当您将常规文件作为目标文件时,它会爆炸。

于 2011-03-23T06:23:13.207 回答