sendfile返回-1 errno 29非法搜索

时间:2013-11-28 02:57:29

标签: c linux sockets

我使用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

1 个答案:

答案 0 :(得分:1)

sendfile()的手册页说:

  

in_fd参数必须对应于支持类似mmap(2)的操作的文件(即,它不能是套接字)。

in_fd是第二个参数,即您命名为sockfd的参数。这表明您的问题是输入文件描述符无法与sendfile()一起使用。