【发布时间】:2014-03-01 12:53:51
【问题描述】:
Boost library 是否提供类似于 fsync() 的内容?
动机:可移植到 POSIX 之外——例如以便在 Windows 上使用类似的功能。
【问题讨论】:
-
Windows 版本为 FlushFileBuffers()
标签: c++ boost filesystems fsync
Boost library 是否提供类似于 fsync() 的内容?
动机:可移植到 POSIX 之外——例如以便在 Windows 上使用类似的功能。
【问题讨论】:
标签: c++ boost filesystems fsync
不,boost 没有这样的东西。正如 cmets 中的 brian beuning 所提到的,将操作系统同步到设备非常依赖于操作系统。
但是,您不必直接调用 Windows API,因为 Microsoft 的 C 运行时库确实有 fsync()。它已被命名为 _commit,并且您仍然可以继续使用文件描述符,而不必更改代码以使用 Windows HANDLE。
您可以按照以下方式介绍自己的可移植性助手:
ifdef __WINDOWS__
#include <io.h>
#define fsync _commit
endif
【讨论】: