如何确保在关闭 fstream 之前将数据写入磁盘?

Tru*_*eon 4 c++ fstream

以下看起来很合理,但我听说即使在 close() 调用之后,理论上数据仍然可以在缓冲区中而不是在磁盘上。

#include <fstream>

int main()
{
    ofstream fsi("test.txt");

    fsi << "Hello World";

    fsi.flush();

    fsi.close();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

pmr*_*pmr 6

你不能用标准工具来做到这一点,而必须依赖操作系统设施。对于 POSIXfsync应该是你所需要的。由于无法从标准流中获取 C 文件描述符,因此您必须在整个应用程序中使用 C 流,或者只是打开文件以刷新磁盘。或者,sync这会刷新所有缓冲区,您的用户和其他应用程序会讨厌这些缓冲区。