Commit-To-Disk 常量

Microsoft 专用

语法

#include <stdio.h>

备注

这些特定于 Microsoft 的常量指定将与打开的文件关联的缓冲区刷新到操作系统缓冲区还是磁盘。 模式包含在指定读/写访问权限的类型(“r”、“w”、“a”、“r+”、“w+”、“a+”)的字符串中。

提交到磁盘模式如下所示:

  • c

    将指定缓冲区的未写入内容写入磁盘。 这项“提交到磁盘”功能仅在显式调用 fflush_flushall 函数时生效。 此模式在处理敏感数据时很有用。 例如,如果在调用 fflush_flushall 后程序终止,您可以确保数据已到达操作系统的缓冲区。 但是,除非文件是使用 c 选项打开的,否则当操作系统也终止时,数据可能从不会将文件传送到磁盘。

  • n

    将指定缓冲区的未写入内容写入操作系统的缓冲区。 操作系统可以缓存数据然后确定写入到磁盘的最佳时间。 在大多数情况下,此行为有助于产生有效的程序行为。 但是,如果保留数据很重要(如银行交易或机票信息)请考虑使用 c 选项。 n 模式是默认设置

注意

c 和 n 选项不是 fopen 的 ANSI 标准的一部分,而是 Microsoft 扩展,不应在需要 ANSI 可移植性的情况下使用

对现有代码使用“提交到磁盘”功能

默认情况下,调用 fflush_flushall 库函数会将数据写入操作系统维护的缓冲区。 操作系统确定将数据实际写入磁盘的最佳时间。 利用运行库的提交到磁盘功能,您可以确保关键数据直接写入磁盘而不是操作系统的缓冲区。 您可以将此功能提供给现有程序,而无需通过将该程序的对象文件与 COMMODE.OBJ 链接来重写程序。

在生成的可执行文件中,调用 fflush 会将缓冲区的内容直接写入磁盘,而调用 _flushall 会将所有缓冲区的内容写入磁盘。 这两个函数是唯一受 COMMODE.OBJ 影响函的数。

结束 Microsoft 专用

另请参阅

流 I/O
_fdopen_wfdopen
fopen_wfopen
全局常量