c – 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;
}

解决方法:

根据man,签名是

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);

上一篇:c – 使用sendfile(),是否可以判断in_fd何时处于EOF状态?


下一篇:uwsgi特性