我怎样才能知道文件刷新在文件关闭之前确实有效?
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()
我想确保调用刷新时数据已刷新到磁盘。
一个简单的代码示例是:
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()