如何为长时间运行的程序执行文件输出

时间:2015-10-18 14:38:27

标签: c++ file-io

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

目前,我执行以下操作:

程序启动时,我打开非附加文件并立即关闭它,只是为了清空文件:

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

在每个时间步,我首先打开附加文件,写入数据,然后关闭文件:

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

这是解决问题的好方法,还是您推荐不同的方法?

1 个答案:

答案 0 :(得分:-1)

不,这种方法浪费了很多时间。

您是否尝试过编写信号处理程序以正确清理?您可以处理大多数事情,例如用户按下Control-C并在退出前关闭文件。

另一个想法是关闭缓冲。最简单的方法可能就是将STDERR重定向到您的文件,因为默认情况下它是无缓冲的。