我写一个模拟程序。在每个时间步中,它将一个输出块写入一个文件。它仍在开发中,因此有时会崩溃或被用户终止。在那种情况下,为了进行调试和分析,我仍然希望文件处于正确的状态,其中包含已写入的数据。
目前,我执行以下操作:
程序启动时,我打开未添加的文件并立即将其关闭,只是要清空文件:
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/