printf("ok before fgets\n");
while ( (fgets(buff, sizeof(buff), fi)) != NULL)
{
printf("ok after");
if(write(connfd,buff,strlen(buff)) != strlen(buff))
{
printf("write() failed\n");
close(connfd);
exit(1);
}
}
これがコードです。コードは「okbeforefgets」を出力しますが、「okafter」を出力することはありません。何が問題なのかしら。
情報が足りない場合は、ネットワーク通信プログラムを書いています。そして、クライアントプログラムが強制終了されるとすぐに、このプログラムはスタックから解放され、いくつかの「okafter」を出力します。ネットワークに関連しているようですが、fgets()はどのようにしてネットワークに関連するローカルファイルを作成できますか?私は実際にこのファイルをリモートクライアントに送信しようとしていますが、送信する前にバグが発生しているようです。
fgets()
チャットで話し合った結果、問題はまったく問題ではなく、ネットワークコードであることが明らかになりました。ループ内の診断メッセージには改行がないため、生成時に診断出力が表示されませんでした。
Jonathan Lefflerのおかげ で、問題は解決しました。printf( "ok after"); 改行が印刷されていないため、情報は表示されませんでした。したがって、改行を追加することによって:printf(ok after \ n); 「okafter」が印刷されていることがわかります。