【发布时间】:2015-10-14 18:45:02
【问题描述】:
有没有 fsync for windows 的替代方法? (C++ 构建器)
fsync 需要包含 unistd.h 并且仅适用于 unix 系统
谢谢!
【问题讨论】:
有没有 fsync for windows 的替代方法? (C++ 构建器)
fsync 需要包含 unistd.h 并且仅适用于 unix 系统
谢谢!
【问题讨论】:
_commit 看起来不错,它需要一个文件描述符,就像fsync 一样:
_commit 函数强制操作系统将与 fd 关联的文件写入磁盘。此调用可确保立即刷新指定文件,而不是由操作系统自行决定。
【讨论】:
fflush 函数可以满足您的需求,但它只适用于文件句柄。
或者,FlushFileBuffers 可能适合您,但它是特定于 Windows 的。
【讨论】:
fflush 适用于 FILE * 类型,所以你应该很高兴。
fsync 或fflush 所做的。您可能想提出一个新问题并包含该特定信息。
fflush 将程序的 I/O 缓冲区刷新到内核系统调用。它不 模拟或调用fsync 或FlushFileBuffers,两者都确保内核 已将其缓冲区写入磁盘。这是一个重要的区别。
来自手册页:
fflush() 强制写入所有用户空间 通过流的给定输出或更新流的缓冲数据 底层写函数。
上面提到的写函数告诉操作系统文件的内容应该是什么。此时,所有更改都会在实际提交到磁盘之前保存在文件系统缓存中。
POSIX 函数fsync() 告诉操作系统将所有更改从其缓存同步到磁盘。正如其他人所说,您可以在 Windows 平台上使用FlushFileBuffers。
【讨论】: