如何在不使用系统缓存和驱动器缓存的情况下用 C++ 将内容写入文件?无论所有系统缓存设置如何,我只想在硬盘上准确写入。

最佳答案

除非您正在编写磁盘设备驱动程序,否则您不能保证在您的写入过程中不会有任何缓存或处理。

C 运行时库公开 fflush(FILE *) 来执行此操作。 Windows 有 FlushFileBuffers 以及一个可以传递给 CreateFile ( FILE_FLAG_NO_BUFFERING ) 的标志(它本身增加了对你可以做什么的限制)。

尝试绕过写缓存的另一种方法是使您的数据结构能够适应部分故障。对于文件,一种流行的技术是在写完文件的其余部分后写出文件的头。假设墨菲而不是马基雅维利的行为,那应该就足够了。

或者使用操作系统提供的文件替换或事务函数(参见 ReplaceFileTransactional NTFS for Windows)。

关于c++ - 无需系统和硬盘缓存即可写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2223942/

10-11 23:19
查看更多