Поделиться через


Константы фиксации на диске

Блок, относящийся только к системам Майкрософт

Синтаксис

#include <stdio.h>

Замечания

Эти константы, используемые корпорацией Майкрософт, определяют, куда сохраняется связанный с открытым файлом буфер: в буферы операционной системы или на диск. Режим содержится в строке, указывающей тип доступа на чтение или запись ("r", "w", "a", "r+", "w+", "a+").

Существуют следующие режимы фиксации на диске:

  • c

    Записывает на диск несохраненное содержимое указанного буфера. Эта функция фиксации на fflush диск выполняется только при явных вызовах функции или _flushall функции. Этот режим полезен при работе с конфиденциальными данными. Например, если программа завершит работу после вызова fflush или _flushall, данные гарантированно достигнут буферов операционной системы. Но если при открытии файла не использовался параметр c, данные могут не сохраниться на диск, если работа операционной системы завершится.

  • n

    Записывает в буферы операционной системы несохраненное содержимое указанного буфера. Операционная система может кэшировать данные и самостоятельно выбирать оптимальное время для записи на диск. Во многих случаях это повышает эффективность работы программы. Но если сохранность данных имеет для вас критическую важность (например, если это данные банковских транзакций или билетов авиакомпании), мы рекомендуем использовать параметр c. По умолчанию применяется режим n.

Примечание.

Параметры c и n не входят в стандарт ANSI для fopen, а представляют собой расширения корпорации Майкрософт, и их не следует использовать, если требуется обеспечить переносимость ANSI.

Использование функции фиксации на диск с существующим кодом

По умолчанию вызовы fflush функций библиотеки _flushall записывают данные в буферы, поддерживаемые операционной системой. Операционная система самостоятельно определяет оптимальное время для фактической записи данных на диск. Функция фиксации на диск, реализованная в библиотеке среды выполнения, позволяет выполнять запись критически важных данных непосредственно на диск, а не в буферы операционной системы. Эту возможность для существующей программы можно предоставить, не переписывая код программы. Для этого свяжите ее объектные файлы с файлом COMMODE.OBJ.

После этого в исполняемом файле все вызовы функции fflush сохраняют содержимое буфера непосредственно на диск, а вызовы функции _flushall сохраняют на диск содержимое всех буферов. COMMODE.OBJ влияет только на работу этих двух функций.

Завершение блока, относящегося только к системам Майкрософт

См. также

Потоковый ввод-вывод
_fdopen, _wfdopen
fopen, _wfopen
Глобальные константы