我正在开发一个文件传输应用程序,并在接收器端使用pthreads来接收多个文件。
传递给pthreads的函数调用以下函数,在该函数结束时,我得到一个SIGABRT错误,终端上出现堆栈粉碎错误。
请帮我找到错误。如果您需要更多代码,我可以发布相同的代码。提前谢谢。
void recv_mesg(int new_sockid, char *fname)
{
cout<<"New Thread created with "<<new_sockid<<" and "<<fname<<endl;
char buf[MAXLINE];
int fd;
fd = open(fname, O_WRONLY );
int len =0;
while (len<1024)
{
int curr = recv(new_sockid, buf, 1024-len, 0);
//fprintf(stdout,"Message from Client:\n");
len += curr;
//write (fd, buf, curr);
fputs(buf, stderr);
}
int file_size = 0;
sscanf(buf,"%d",&file_size);
if(file_size<=0)
perror("File Size < 0");
sprintf(buf,"Yes");
send(new_sockid,buf,strlen(buf),0);
len = 0;
while (len<file_size)
{
int curr = recv(new_sockid, buf, min(file_size-len,MAXLINE), 0);
len += curr;
write (fd, buf, curr);
//fputs(buf, stdout);
//fflush(stdout);
}
len = 0;
close(fd);
close(new_sockid);
}
答案 0 :(得分:0)