我在嵌入式处理器或Linux上进行大部分编程。当我需要将数据同步到我的持久存储时,我通常使用sync(2)系统调用。 Windows是否有同等效力?
答案 0 :(得分:4)
http://msdn.microsoft.com/en-us/library/aa364439(VS.85).aspx http://www.codeproject.com/KB/system/EjectMediaByLetter.aspx
FlushFileBuffers具有卷的句柄。您必须为每个卷执行此操作:(
答案 1 :(得分:3)
使用FlushFileBuffers,但您需要一个需要刷新文件的句柄。
答案 2 :(得分:0)
如果您使用posix文件函数(fopen()等),可以使用_flushall:
http://msdn.microsoft.com/en-us/library/s9xk9ehd%28v=vs.80%29.aspx
答案 3 :(得分:0)
参见此处:https://jeffpar.github.io/kbarchive/kb/066/Q66052/
最初使用fopen打开文件时,请在最后一个选项中加入“ c”模式选项:
fopen( path, "wc") // w - write mode, c - allow immediate commit to disk
然后,当您要强制刷新到磁盘时,调用
_flushall()
我们在致电
之前先打了这个电话fclose()
请注意,这种方法不需要FlushFileBuffers
所需的管理权限。
从上述网站上
“ Microsoft C / C ++ 7.0版为fopen()引入了” c“模式选项 功能。当应用程序打开文件并指定“ c”模式时, 当运行库将文件缓冲区的内容写入磁盘时, 应用程序调用fflush()或_flushall()函数。 “