关闭前实时写入文件

Writing to file in real time before closing it

我将 Solver() 函数(caffe 第三个库中的一个函数)发出的输出结果写在一个文件中,命令如下:

if(std::freopen("redir.txt", "w", stdout)) {
    std::printf("stdout is redirected to a file\n"); // this is written to redir.txt
    solver->Solve();
    std::fclose(stdout);
}

但是由于Solve()函数连续发出输出,但是redir.txt直到执行了‍std::fclose(stdout);才会更新。所以我不能实时看到结果。

如何实时更新我的​​文件?

定期使用std::flush将写入(缓冲)的数据刷新到文件。

不过不要 flush 太频繁,否则性能会受到影响。

通常 std::flush 也许可行。