Надеюсь, вопрос объяснил мою проблему. Я также был бы признателен, если бы обойти это «работает».
Традиционный способ чтения файла (о котором я знаю)
int fd;
char buffer[MAX];
while(read(fd,buffer,MAX)>0)
{
buffer[MAX]='\0';
write(sockfd,buffer,MAX);
memset(buffer,NULL,MAX);
}
вызывал переполнение. Обходной путь, который как-то неожиданно сработал, был
while((read(fd,buffer,MAX)!=0)||(read(fd,buffer,MAX)!= -1))
{
buffer[MAX]='\0';
write(sockfd,buffer,MAX);
memset(buffer,NULL,MAX);
}
^^ Этот код распечатал весь файл, без пропусков, насколько это возможно.
Такие вещи, как
do
{
int temp;
temp=read(fd,buffer,MAX);
if((temp == 0) || (temp == -1))
{
break;
}
buffer[MAX]='\0';
write(sockfd,buffer,MAX);
memset(buffer,NULL,MAX);
}while(1);
также вызвал переполнение стека. Я что-то упустил здесь действительно важное?
Спасибо