C++ windows c+的Fsync替代方案+;

C++ windows c+的Fsync替代方案+;,c++,windows,fsync,C++,Windows,Fsync,对于windows,是否有fsync的替代方案?(C++builder) Fsync需要包含unistd.h,并且仅适用于unix系统 谢谢 该函数可以执行您需要的操作,但它仅适用于文件句柄 或者,它可能适合您,但它是特定于Windows的。从手册页: fflush()强制写入所有用户空间 通过流的 底层写函数 提到的write函数告诉操作系统文件的内容应该是什么。此时,所有更改将在实际提交到磁盘之前保存在文件系统缓存中 POSIX函数fsync()告诉操作系统将其缓存中的所有更改同步到磁盘。正

对于windows,是否有fsync的替代方案?(C++builder)

Fsync需要包含unistd.h,并且仅适用于unix系统

谢谢

该函数可以执行您需要的操作,但它仅适用于文件句柄

或者,它可能适合您,但它是特定于Windows的。

从手册页:

fflush()强制写入所有用户空间 通过流的 底层写函数

提到的write函数告诉操作系统文件的内容应该是什么。此时,所有更改将在实际提交到磁盘之前保存在文件系统缓存中


POSIX函数
fsync()
告诉操作系统将其缓存中的所有更改同步到磁盘。正如其他人所说,您可以在Windows平台上使用
FlushFileBuffers

?您所说的“它仅适用于文件句柄”是什么意思?如果我使用file*和fopen,那么fflush就足够了?@user687459-正确,
fflush
是用来处理
file*
类型的,所以你应该准备好了。它不行!完整的故事是,我写了约50MB的文件,旧文件也存在。在我写了之后,我将它复制到电脑上的其他位置,但当我复制新文件时,新文件仍然没有更新,所以它会复制旧文件或新版本的损坏文件。。。有什么想法吗?你想让两个不同的文件在计算机上保持同步?这根本不是
fsync
fflush
所做的。您可能需要打开一个新问题并包含该特定信息。
fflush
将程序的I/O缓冲区刷新到内核系统调用。它不模拟或调用
fsync
FlushFileBuffers
,这两者都确保内核已将其缓冲区写入磁盘。这是一个重要的区别。