Константы фиксации на диске
Блок, относящийся только к системам Майкрософт
#include <stdio.h>
Заметки
Эти константы систем Microsoft определяют, сбрасывается ли буфер, связанный с открытым файлом, в буферы операционной системы или на диск. Режим содержится в строке, указывающей тип чтения и записи ("r", "w", "a", "r+", "w+", "a+").
Режимы фиксация на диске следующие:
c
Записывает незаписанное содержимое указанного буфера на диск. Эта функциональность фиксации на диск возникает только при явных вызовах или функции fflush или функции _flushall. Этот режим полезен при работе с конфиденциальными данными. Например, если программа завершается после вызова fflush или _flushall, можно убедиться, что данные достигли буферов операционной системы. Однако если файл не открыт с параметром c, данные могут не попасть на диск, если операционная система также завершается.n
Записывает незаписанное содержимое указанного буфера в буферы операционной системы. Операционная система может кэшировать данные и затем определить оптимальное время для записи на диск. При многих условиях этот режим способствует эффективному поведению программы. Однако если хранение данных является критическим (например, банковская транзакция или информация об авиабилете) рекомендуется использовать параметр c. Режим по умолчанию n .Примечание
Параметры c и n не является частью стандарта ANSI для fopen, а являются расширениями Microsoft и не должны использоваться, где нужна переносимость ANSI.
Использование функции фиксации на диска с существующим кодом
По умолчанию вызовы библиотечных функций fflush или _flushall записывают данные в буферы поддерживаемые операционными системами. Операционная система определяет оптимальное время для записи данных на диск. Функция фиксации на диск библиотеки времени выполнения позволяет убедиться в том, что критические данные записаны непосредственно на диск, а не в буферы операционной системы. Можно предоставить эту возможность существующей программе без ее перезаписи, связав ее объектные файлы с COMMODE.OBJ.
В итоговом исполняемом файле, вызовы fflush записывают содержимое буфера непосредственно на диск, а вызовы _flushall записывают содержимое всех буферов на диск. COMMODE.OBJ влияет только на эти две функции.
Завершение блока, относящегося только к системам Майкрософт