fclose -
ストリームを閉じる
#include <stdio.h>
int fclose(FILE *stream);
fclose() 関数は、
stream
が指すストリームを
(バッファーリングされて
いた全ての出力データを
fflush(3)
を用いて書き込んで)
フラッシュし、
対応するファイルディスクリプターをクローズする。
関数が正常に終了すると
0 が返される。
正常に終了しなかった場合には
EOF が返され、
errno
がエラーを示すために設定される。
どちらの場合も、そのストリームに対する
(
fclose()
へのさらなる呼び出しを含む)
それ以上のアクセスは
未定義の動作を生じさせる。
- EBADF
-
stream
の基となるファイルディスクリプターが不正である。
fclose()
関数はこれ以外にも
close(2),
write(2),
fflush(3)
のルーチンで失敗することがある。その場合は
errno
が、失敗したルーチンで設定された値に設定される。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
fclose() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C89, C99.
fclose() は C
ライブラリで提供されたユーザー空間バッファーだけをフラッシュする点に注意すること。
データを確実に物理的にディスクに記録するためには
カーネルバッファーも
(
sync(2) や
fsync(2) を用いて)
フラッシュしなければならない。
close(2),
fcloseall(3),
fflush(3),
fileno(3),
fopen(3),
setbuf(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。