簡體   English   中英

如何為長時間運行的程序進行文件輸出

[英]How to do file output for a long-running program

我寫一個模擬程序。 在每個時間步中,它將一個輸出塊寫入一個文件。 它仍在開發中,因此有時會崩潰或被用戶終止。 在那種情況下,為了進行調試和分析,我仍然希望文件處於正確的狀態,其中包含已寫入的數據。

目前,我執行以下操作:

程序啟動時,我打開未添加的文件並立即將其關閉,只是要清空文件:

file.open(fname, std::ios::binary);
file.close();

在每個時間步驟 ,我首先打開附加文件,寫入數據,然后關閉文件:

file.open(fname, std::ios::binary | std::ios::app);
... // data is written here
file.close();

這是解決問題的好方法還是您建議使用其他方法?

不,這種方法浪費很多時間。

您是否嘗試編寫信號處理程序以正確清理? 您可以處理大多數事情,例如用戶按下Control-C並在退出之前關閉文件。

另一個想法是關閉緩沖。 最簡單的方法可能只是將STDERR重定向到您的文件,因為默認情況下該文件沒有緩沖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM