ディスク コミット定数
更新 : 2007 年 11 月
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 の影響を受けるのは、この 2 つの関数だけです。
← Microsoft 固有の仕様