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”被打印出来了。