<分区>
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);
}
}
这是代码。该代码在 fgets 之前打印“ok”,但从不打印“ok after”。我想知道是什么问题。
以防资料不够,我正在写一个网络通讯程序。一旦客户端程序被杀死,这个程序就不会卡住,并打印出几个“ok after”。好像跟网络有关,但是fgets()怎么会是本地文件跟网络有关呢?我实际上是在尝试将此文件发送到远程客户端,但似乎错误发生在发送之前。
经过聊天讨论,很明显问题根本不是 fgets()
,而是网络代码。循环中的诊断消息没有换行符,因此生成时没有出现诊断输出。
感谢Jonathan Leffler , 问题已经解决了。 printf("确定之后");信息没有出现,因为没有换行符被打印出来。所以通过添加换行符: printf(ok after\n);我们可以看到“ok after”打印出来了。