如何刷新用stdio函数写的输出?

时间:2013-04-24 21:23:05

标签: c

我有一个父进程和一个子进程(使用fork创建子进程),在父进程中定义了这个代码:

FILE* pfile = fopen("log.txt","w");

while (1) { 
    serve child requests
    fprintf (pfile,"some data\n");
}

fclose (pfile);

问题是代码的最后一行永远不会被执行,因为无限循环不会终止(这是程序应该如何操作)..所以文件永远不会被关闭,连续写入的数据不会被保存到文件。

我该如何解决这个问题?

非常感谢任何帮助,谢谢

2 个答案:

答案 0 :(得分:5)

缓冲区已满时保存数据。在此期间,您还可以使用fflush()强制文件提交 - 当app或while循环终止时,文件本身将物理关闭。

FILE* pfile = fopen("log.txt","w");

while (1) 
{ 
    serve child requests
    fprintf (pfile,"some data\n");
    fflush(pfile);
}

fclose (pfile);

答案 1 :(得分:3)

您可以在循环中使用fflush来强制回写文件。