Manpages

名 前

close − フ ァ イ ル デ ィ ス ク リ プ タ ー を ク ロ ー ズ す る

書 式

#include <unistd.h>

int close(int fd);

説 明

close() は 、 フ ァ イ ル デ ィ ス ク リ プ タ ー を ク ロ ー ズ す る 。 そ の デ ィ ス ク リ プ タ ー は 、 ど の フ ァ イ ル も 参 照 し て い な い 状 態 に な り 、 再 利 用 が 可 能 に な る 。 そ の フ ァ イ ル デ ィ ス ク リ プ タ ー に 関 連 づ け ら れ た フ ァ イ ル に か け ら れ た レ コ ー ド ロ ッ ク (fcntl(2) 参 照 ) の う ち 、 そ の プ ロ セ ス が 保 有 し て い る も の は 、 (そ の フ ァ イ ル デ ィ ス ク リ プ タ ー が ロ ッ ク 取 得 に 利 用 さ れ た か ど う か に よ ら ず ) す べ て 削 除 さ れ る 。

fd が 、 対 応 す る オ ー プ ン フ ァ イ ル 記 述 (open file description) (open(2) 参 照 ) を 参 照 す る 最 後 の フ ァ イ ル デ ィ ス ク リ プ タ ー だ っ た 場 合 、 オ ー プ ン フ ァ イ ル 記 述 に 関 連 す る リ ソ ー ス が 解 放 さ れ る 。 そ の デ ィ ス ク リ プ タ ー が 、 unlink を 使 用 し て 削 除 (remove) さ れ た フ ァ イ ル に 対 す る 最 後 の 参 照 だ っ た 場 合 に は 、 そ の フ ァ イ ル は 削 除 (delete) さ れ る 。

返 り 値

close() は 成 功 し た 場 合 は 0 を 返 す 。 エ ラ ー が 発 生 し た 場 合 は −1 を 返 し て 、 errno を 適 切 に 設 定 す る 。

エ ラ ー

EBADF

fd が 有 効 な オ ー プ ン さ れ た デ ィ ス ク リ プ タ ー で な い 。

EINTR

close() コ ー ル が シ グ ナ ル に よ り 中 断 (interrupt) さ れ た 。 signal(7) 参 照 。

EIO

I/O エ ラ ー が 発 生 し た 。

準 拠

SVr4, 4.3BSD, POSIX.1−2001.

注 意

close() の 返 り 値 の チ ェ ッ ク は よ く 省 略 さ れ る が 、 こ れ は 深 刻 な プ ロ グ ラ ミ ン グ エ ラ ー で あ る 。 前 の write(2) 処 理 に 関 す る エ ラ ー が 最 後 の close() の と き に な っ て 初 め て 通 知 さ れ る 場 合 が あ り う る 。 フ ァ イ ル ク ロ ー ズ の 際 に 返 り 値 を チ ェ ッ ク し な い と 、 気 付 か な い う ち に デ ー タ を 失 っ て し ま う か も し れ な い 。 こ れ は 特 に NFS や デ ィ ス ク ク ォ ー タ を 使 用 し た 場 合 に 見 ら れ る 。 返 り 値 は 状 態 確 認 用 に の み 利 用 す べ き 点 に 注 意 す る こ と 。 特 に 、 EINTR 後 に close() を 再 度 行 う べ き で は な い 。 な ぜ な ら 、 こ れ に よ り 、 別 の ス レ ッ ド が 再 利 用 し た デ ィ ス ク リ プ タ ー を ク ロ ー ズ し て し ま う 可 能 性 が あ る か ら だ 。 ク ロ ー ズ に 成 功 し て も 、 デ ー タ が デ ィ ス ク に 保 存 さ れ た か ど う か は 保 証 さ れ な い (カ ー ネ ル が 書 き こ み を 遅 延 さ せ る こ と が あ る た め で あ る )。 ス ト リ ー ム が ク ロ ー ズ さ れ る と き に バ ッ フ ァ ー を フ ラ ッ シ ュ す る か ど う か は 、 フ ァ イ ル シ ス テ ム に よ っ て 異 な る 。 デ ー タ が 物 理 的 に 保 存 さ れ る こ と を 保 証 す る 必 要 が あ る 場 合 に は 、 fsync(2) を 使 用 す る こ と (fsync(3) を 行 っ た 時 点 で 、 デ ー タ の 保 存 は デ ィ ス ク の ハ ー ド ウ ェ ア に 依 存 す る 問 題 と な る )。 同 じ プ ロ セ ス 内 の 他 の ス レ ッ ド の シ ス テ ム コ ー ル が 使 用 し て い る 可 能 性 が あ る 間 に 、 フ ァ イ ル デ ィ ス ク リ プ タ ー を ク ロ ー ズ す る の は 、 お そ ら く 賢 明 で は な い だ ろ う 。 フ ァ イ ル デ ィ ス ク リ プ タ ー は 再 利 用 さ れ る か も し れ な い の で 、 あ い ま い な 競 合 条 件 と な る こ と が あ り 、 意 図 し な い 副 作 用 の 原 因 と な り う る 。

関 連 項 目

fcntl(2), fsync(2), open(2), shutdown(2), unlink(2), fclose(3)

こ の 文 書 に つ い て

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