#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <sys/sendfile.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(){
int fd1,fd2,rc;
off_t offset = 0;
struct stat stat_buf;
fd1=open("./hello.txt",O_RDONLY); //read only
fd2=open("../",O_RDWR); //both read and write
fstat(fd1, &stat_buf); //get the size of hello.txt
printf("file size: %d\n",(int)stat_buf.st_size);
rc=sendfile (fd2, fd1, &offset, stat_buf.st_size);
}
如您所见,这是一个非常简单的程序。但是我只是在 ../ 中找不到 hello.txt 我的目标是看看如果我输入一个任何数字会发生什么,比如 10,而不是可能是数百字节的 st_size。
编辑:
感谢您的回答。好吧,我听从了你的建议并改变了
fd2=open("../",O_RDWR);
到
fd2=open("../hello.txt",O_RDWR);
另外,我检查了 fstat 和 sendfile 的返回值,一切正常。
但问题还是一样。