2013-04-24 41 views
1

我有一个父进程和子进程(儿童用叉子创建)在父进程中一些地方的代码定义:如何刷新使用stdio函数写入的输出?

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

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

fclose (pfile); 

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

我该如何解决这个问题?

任何帮助将不胜感激,谢谢

回答

5

数据保存时,缓冲区已满。与此同时,您也可以强制文件提交fflush() - 文件本身将在应用程序或while循环终止时在物理上关闭。

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

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

fclose (pfile); 
3

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

相关问题