次の方法で共有


ディスク コミット定数

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 固有の仕様はここまで

関連項目

ストリーム入出力
_fdopen, _wfdopen
fopen, _wfopen
グローバル定数