標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
#include <stdio.h>
int fflush(FILE *stream);
#define _OPEN_SYS_UNLOCKED_EXT 1
#include <stdio.h>
int fflush_unlocked(FILE *stream);
stream で指定されるストリームをフラッシュします。stream が NULL の場合は、すべてのオープン・ストリームをフラッ シュします。
fflush() 関数は、ungetc() 関数と ungetwc() 関数の影響を受けます。これらの関数を呼び出すと、fflush() は、文字がプッシュ・バックされる ときのファイル位置をバックアップするようになります。詳しくは、ungetc() および ungetwc() 関数をそれぞれ参照してください。必要に応じて _EDC_COMPAT 環境変数をオープン時に設定することができ、それにより、fflush() は、プッシュ・バックされたすべての文字を廃棄し、ファイル位置を、ungetc() または ungetwc() 関数呼び出しがはじめて発行 されたときの位置のままにします。
ungetwc() が 1 つのワイド char をテキスト・ストリームにプッシュした後で fflush() が使用されると、ungetwc() が発行されたときにファイルが 存在していた位置から 1 ワイド文字分だけ位置がバックアップされます。ワイド指向バイナリー・ストリームの場合は、ungetc バッファーでワイド文字を表すのに使用されるバイト数にもとづいて、位置がバックアップされます。このため、最初の位置でまったく読み取られなかったワイド指向バイナリー ・ストリームが宛先であるとき、文字に対して ungetwc() を使用 しようとすると、fflush() に対して未定義の動作の結果となります。 _EDC_COMPAT 環境変数でも ungetwc() の後の fflush() の動作が変更 されること、およびこの変数により、プッシュ・バックされたすべての ワイド char が廃棄され、位置は、ungetwc() が発行された位置のままになる ことに注目してください。_EDC_COMPAT 環境変数の詳細について は、「z/OS XL C/C++ プログラミング・ガイド」の『環境変数』を参照してください。
バッファリング・モードとファイル・タイプは、出力データがフラッシュされるときに影響を与えます。 詳しくは、「z/OS XL C/C++ プログラミング・ガイド」の『C ストリームのバッファー方式』を参照してください。
stream は、fflush() 呼び出しのあと、オープンしたままに なっています。読み取り操作は、書き込み操作の直後または直前には不可能である ので、fflush() 関数を使用して、これら 2 つのモード間の切り替えを行う ことができます。fflush() 関数は、読み取りプログラムや同時書き込み/更新プログラム で動作するときにバッファーを最新表示するためにも使用できます。
fflush_unlocked() は、スレッド・セーフでないことを除いて、機能的に fflush() と 等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。
fflush() 関数は、type=blocked を指定してオープンされたファイルには影響しません。
正常にバッファーをフラッシュした場合、fflush() は 0 を戻します。
正常に実行されなかった場合、fflush() は EOF を戻します。すべてのオープン・ファイルをフラッシュ中に、あるファイルのフラッシュに 失敗すると、EOF を戻します。しかしフラッシュは、正常にフラッシュできる、その他のオープン・ファイル で継続されます。
⁄* CELEBF15
This example flushes a stream buffer.
It tests for the returned value of 0 to see if the flushing was
successful.
*⁄
#include <stdio.h>
int retval;
int main(void)
{
FILE *stream;
stream = fopen("myfile.dat", "w");
retval=fflush(stream);
printf("return value=%i",retval);
}