我写一个模拟程序。在每个时间步中,它将一个输出块写入一个文件。它仍在开发中,因此有时会崩溃或被用户终止。在那种情况下,为了进行调试和分析,我仍然希望文件处于正确的状态,其中包含已写入的数据。

目前,我执行以下操作:

程序启动时,我打开未添加的文件并立即将其关闭,只是要清空文件:

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重定向到您的文件,因为默认情况下该文件没有缓冲。

关于c++ - 如何为长时间运行的程序进行文件输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33199223/

10-12 14:55
查看更多