ディスク コミット定数
Microsoft 固有の仕様
構文
#include <stdio.h>
解説
これらの Microsoft 固有の定数は、開いているファイルに関連付けられているバッファーが、オペレーティング システムのバッファーまたはディスクにフラッシュされるかどうかを指定します。 このモードは、読み取り/書き込みのアクセス権の種類 ("r"、"w"、"a"、"r+"、"w+"、"a+") を指定する文字列に含まれます。
ディスク コミット モードは次のとおりです。
c
指定したバッファーの書き込まれていない内容をディスクに書き込みます。 このディスクへのコミット機能は、
fflush
または_flushall
関数への明示的な呼び出しでのみ発生します。 このモードは、機密データを処理する場合に便利です。 たとえば、プログラムがfflush
または_flushall
を呼び出した後に終了する場合、データがオペレーティング システムのバッファーに達したと考えて間違いありません。 ただし、ファイルを c オプションで開く場合を除き、オペレーティング システムも終了する場合は、データがディスクに書き込まれることはほぼありません。n
指定したバッファーの書き込まれていない内容をオペレーティング システムのバッファーに書き込みます。 オペレーティング システムはデータをキャッシュし、ディスクに書き込むための最適な時間を決定します。 多くの状況で、この動作は効率的なプログラムの動作になります。 ただし、データの保有期間が重要な場合 (銀行取引や航空券の情報など) は、cオプションを使用することを検討してください。 既定では n モードです。
Note
c および n オプションは、fopen
の ANSI 標準には含まれませんが、Microsoft 拡張機能です。ANSI 互換が必要な場合は使用しないでください。
既存のコードでディスクへのコミット機能を使用する
既定では、 fflush
または _flushall
ライブラリ関数の呼び出しによって、オペレーティング システムによって維持されるバッファーにデータが書き込まれます。 オペレーティング システムでは、ディスクにデータを実際に書き込むための最適な時間を決定します。 ランタイム ライブラリのディスク コミット機能を使用すると、重要なデータをオペレーティング システムのバッファーではなく、ディスクに直接書き込むことができます。 既存のプログラムのオブジェクト ファイルと COMMODE.OBJ をリンクさせて書き直すことなく、既存のプログラムにこの機能を提供することができます。
生成される実行ファイルでは、fflush
への呼び出しはバッファーの内容をディスクに直接書き込み、_flushall
への呼び出しはすべてのバッファーの内容をディスクに書き込みます。 これら 2 つの関数のみが、COMMODE.OBJ の影響を受けます。
Microsoft 固有の仕様はここまで