Проблема с 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.