sendfile()无法复制普通文本文件

时间:2011-03-23 06:20:22

标签: text file sendfile

sendfile的问题是它无法使用文件fds复制两个文本文件。 错误是EINVAL。 //描述符无效或被锁定,或者m_() - 类似的操作不适用于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.

1 个答案:

答案 0 :(得分:1)

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