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.