質問が私の問題を説明してくれることを願っています。また、「うまくいく」という回避策を説明していただければ幸いです。
ファイルを読み取る従来の方法(私が知っている)
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);
また、スタックオーバーフローが発生しました。ここで本当に重要なものが欠けていますか?
ありがとう