繁体   English   中英

sendfile不复制文件内容

[英]sendfile doesn't copy file contents

我创建文件1.txt 2.txt并将一些内容写入1.txt
然后,我使用下面的代码,并将内容复制到2.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;
}

人说 ,签名是

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

根据sendfile原型,要写入的fd应该是第一个参数,读取的fd应该是第二个参数。 但是,您使用了完全相反的方式。

因此,您的sendfile语句应如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM