sendfile не копирует содержимое файла

Я создаю файлы 1.txt 2.txt и написать некоторый контент в 1.txt,
Затем я использую приведенный ниже код и хочу скопировать содержимое в 2.txt,
Но это не работает. Там нет ничего в 2.txt,

Можете ли вы объяснить мою ошибку?

int main()
{
int fd1 = open("1.txt",O_RDWR);
int fd2 = open("2.txt",O_RDWR);
struct stat stat_buf ;
fstat(fd1,&stat_buf);
ssize_t size = sendfile(fd1,fd2,0,stat_buf.st_size);
cout<<"fd1 size:"<<stat_buf.st_size<<endl; //output 41
cout<<strerror(errno)<<endl; //output success

close(fd1);
close(fd2);
return 0;
}

5

Решение

В соответствии с человек, подпись

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

Итак, первый параметр — это дескриптор файла, в который вы хотите записать, а второй — дескриптор файла, из которого вы хотите прочитать.

Итак, ваш звонок должен быть:

ssize_t size = sendfile(fd2,fd1,0,stat_buf.st_size);

5

Другие решения

Согласно Отправить файл Прототип, fd, в который вы хотите записать, должен быть первым параметром, а fd, из которого вы читаете, должен быть вторым параметром. Но вы использовали это с точностью до наоборот.

Таким образом, вы должны указать следующее:

ssize_t size = sendfile(fd2,fd1,0,stat_buf.st_size);
0

По вопросам рекламы [email protected]