【问题标题】:Linux Sync() equivalent windows APILinux Sync() 等效的 windows API
【发布时间】:2013-09-06 18:48:48
【问题描述】:

Linux "sync() API 会将内存中缓冲的所有数据写入磁盘。Windows 中是否有任何等效调用?

【问题讨论】:

  • 您为什么期望 Windows 中的每个 Linux 系统调用都完全等效。它们是设计非常不同的操作系统!如果您需要为 Windows 编写代码(我不知道),请尝试以全新的思维独自学习。

标签: linux windows memory-management


【解决方案1】:

FlushFileBuffers 函数是等效的 API,尽管它的工作方式与典型用例中的 linux fsync 调用更相似,因为它将文件句柄作为参数。对于sync 类似的行为,您可以调用FlushFileBuffers,并使用我链接到的文档中所述的卷句柄。这需要适当的权限。

【讨论】:

  • 太好了...谢谢大家
  • 请注意,您可以打开一个卷设备并在该卷的句柄上调用 FlushFileBuffers(),这将刷新该卷上所有打开的文件。请注意,如果您在没有 FILE_SHARE_WRITE 标志的情况下打开卷,它也会刷新 并且 使文件缓存无效。
猜你喜欢
  • 2013-10-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2019-07-30
  • 1970-01-01
相关资源
最近更新 更多