我使用sendfile在客户端和服务器之间发送和接收文件,发送文件很好,但是当收到文件时,它返回-1,并且errno是29非法搜索,我不确定是什么问题
int fd = open(filename, O_WRONLY | O_CREAT);
off_t offset = 0;
int ret = sendfile(fd, sockfd, &offset, filelen);
printf("ret = %d errno=%d\n", ret, errno);
>>> ret = -1 errno = 29
答案 0 :(得分:1)
sendfile()
的手册页说:
in_fd
参数必须对应于支持类似mmap(2)的操作的文件(即,它不能是套接字)。
in_fd
是第二个参数,即您命名为sockfd
的参数。这表明您的问题是输入文件描述符无法与sendfile()
一起使用。