Я разрабатываю приложение для передачи файлов и использую pthread на стороне получателя для получения нескольких файлов.
Функция, которая передается в 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);
}