2013-04-24 40 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強制回寫文件。

相關問題