我有一个父进程和一个子进程(使用fork创建子进程),在父进程中定义了这个代码:
FILE* pfile = fopen("log.txt","w");
while (1) {
serve child requests
fprintf (pfile,"some data\n");
}
fclose (pfile);
问题是代码的最后一行永远不会被执行,因为无限循环不会终止(这是程序应该如何操作)..所以文件永远不会被关闭,连续写入的数据不会被保存到文件。
我该如何解决这个问题?
非常感谢任何帮助,谢谢
答案 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
来强制回写文件。