SIMPLE SOLUTIONS

FFLUSH(3) - Linux manual

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

2015-02-01
FFLUSH(3) Linux Programmer's Manual FFLUSH(3)

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

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

出力ストリームに関しては、 fflush() は、ユーザー空間でバッファーリングされているすべてのデータを 指定された出力に書き出す (フラッシュする)、 もしくはストリーム stream の下位にある書き込み関数を用いてこのストリームを更新する。 seek 可能なファイルに関連付けられた入力ストリーム (ディスクファイルは seek 可能だが、 パイプや端末は seek できない) に関しては、 fflush() は、対応するファイルから取得されたが、アプリケーションからは 読み出されていないバッファーデータを全て破棄する。 ストリームは開いた状態のままであり、 この関数によって何の影響も受けない。 stream 引数が NULL ならば、 fflush() は開いているすべての出力ストリームをフラッシュする。 これらの処理をロックせずに行いたいときは、 unlocked_stdio(3) を参照のこと。

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

EBADF stream は開いているストリームではない。 あるいはストリームは書き込み用ではない。 fflush() 関数は write(2) に関して規定されているエラーで失敗することもある。 この場合 errno もその値に設定される。

マ 関数 fflush() はスレッドセーフである。

C89, C99, POSIX.1-2001, POSIX.1-2008. POSIX.1-2001 では入力ストリームのフラッシュの動作は規定されていなかったが、 POSIX.1-2008 では規定されている。

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.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
GNU 2015-02-01 FFLUSH(3)
fflush(3).txt (日本語 / Japanese)
Index English version of fflush(3)
Go top