1

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

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

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

fclose (pfile);

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

我怎么解决这个问题 ?

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

4

2 回答 2

5

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

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

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

fclose (pfile);
于 2013-04-24T21:25:15.140 回答
3

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

于 2013-04-24T21:26:31.060 回答