EN JA
FFLUSH(3)
FFLUSH(3) Linux Programmer's Manual FFLUSH(3)

名前

fflush -ストリームの内容を強制的に出力(フラッシュ)する

書式

#include <stdio.h>
 
int fflush(FILE * stream );

説明

出力ストリームに関しては、 fflush() は、ユーザー空間でバッファリングされているすべてのデータを指定された出力に書き出す (フラッシュする)、もしくはストリーム stream の下位にある書き込み関数を用いてこのストリームを更新する。入力ストリームに関しては、 fflush() は、対応するファイルから取得されたが、アプリケーションからは読み出されていないバッファデータを全て破棄する。ストリームは開いた状態のままであり、この関数によって何の影響も受けない。

stream 引数が .BR NULL ならば、 fflush() は開いている すべての出力ストリームをフラッシュする。

これらの処理をロックせずに行いたいときは、 unlocked_stdio(3) を参照のこと。

返り値

成功すると 0 が返される。その他の場合には EOF が返され、 errno が、エラーに対応した値に設定される。

エラー

EBADF
Stream は開いているストリームではない。あるいはストリームは書き込み用ではない。

fflush() 関数は write(2) に関して規定されているエラーで失敗することもある。この場合 errno もその値に設定される。

準拠

C89, C99, POSIX.1-2001, POSIX.1-2008.
 
標準では、入力ストリームに対する動作は規定されていない。他のほとんどの実装は Linux と同じ動作をする。

注意

fflush() は、 C ライブラリが与えているユーザー空間のバッファしかフラッシュしない。データが物理的にディスクに保存されることを保証したければ、カーネルバッファもフラッシュしなければならない。これには例えば sync(2) や fsync(2) を用いる。

関連項目

fsync(2), sync(2), write(2), fclose(3), fopen(3), setbuf(3), unlocked_stdio(3)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2009-09-06 GNU