Manpages

名 前

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 が 、 失 敗 し た ル ー チ ン で 設 定 さ れ た 値 に 設 定 さ れ る 。

準 拠

C89, C99.

注 意

fclose() は C ラ イ ブ ラ リ で 提 供 さ れ た ユ ー ザ ー 空 間 バ ッ フ ァ ー だ け を フ ラ ッ シ ュ す る 点 に 注 意 す る こ と 。 デ ー タ を 確 実 に 物 理 的 に デ ィ ス ク に 記 録 す る た め に は カ ー ネ ル バ ッ フ ァ ー も (sync(2) や fsync(2) を 用 い て ) フ ラ ッ シ ュ し な け れ ば な ら な い 。

関 連 項 目

close(2), fcloseall(3), fflush(3), fopen(3), setbuf(3)

こ の 文 書 に つ い て

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