我怎样才能知道文件刷新在文件关闭之前确实有效?

How can I tell file flush actually works before file close?

我想确保调用刷新时数据已刷新到磁盘。

一个简单的代码示例是:

int main() {
    std::ofstream outfile("test.txt");
    for (int n = 0; n < 100; ++n) {
        outfile << n;
        outfile.flush();
        // TODO: insert code to make sure data is flushed to disk
        // I tried using the stat file size but it does not always grow after flush.
    }
    outfile.close();
    return 0;
}

我确信 std::ofstream 正确实现了冲洗功能。事实上,我正在尝试测试另一个库的刷新功能,这只是一个例子。

outfile.flush() 会将流缓冲区刷新到操作系统。如果你想确保系统缓冲区被刷新到磁盘,你必须发出一个 OS 特定的系统调用来做到这一点。在 POSIX 兼容系统上,您可以调用 <unistd.h>.

中定义的 sync()