次の方法で共有


ディスク コミット定数

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 固有の仕様

参照

参照

ストリーム入出力

_fdopen、_wfdopen

fopen、_wfopen

グローバル定数