【发布时间】:2011-11-12 20:41:57
【问题描述】:
我有一个在 Windows 7 上写入文件的 C++ 程序。当我调用 f.flush() 时,NTFS 文件没有变大。有没有办法强制刷新文件?
【问题讨论】:
-
您确定有待处理的输出吗?另外,fsync(或 [
_commit]())是你的朋友(archives.postgresql.org/pgsql-hackers-win32/2003-11/…) -
哦,是的,我很肯定有输出。它不是待处理的——它已被发送。但 NTFS 缓冲区。
-
这是一个繁重的 CRT 实现细节。对于 MSVC CRT,它是通过将 'c' (= commit) 传递给 fopen() mode 参数来完成的。查看您使用的那个的来源。