CLOSE(2)

名前
close - ファイル・ディスクリプターをクローズする

書式
#include <unistd.h>

int close(int fd);

説明
close ファイル・ディスクリプター(descriptor)をクローズする。そのディスク リプターはどのファイルも参照していない状態になり再使用が可能になる。 呼び出したプロセスが所有しているロック(lock)のうち、参照するファイルに 関連しているものは全て(そのファイル・ディスクリプターがロックを取得す るのに使用されたかどうかにかかわらず)削除される。

fd がそのファイル・ディスクリプターの最後のコピーだった場合には、 そのディスクリターに関連した資源は解放される。 ディスクリプターが unlink を使用して削除(remove)されたファイルに対する最後の参照だった場合には そのファイルは除去(delete)される。

返り値
close は成功した場合はゼロを返す、エラーが発生した場合は -1 を返す。

エラー

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

準拠
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 には他に ENOLINK エラー状態についての記述がある。

注意
close の返り値をチェックしないことは一般的である。 しかし、深刻なプログラミング・エラーになる場合がある。 ``裏書き込み(write-behind)''のテクニックを使用して実装された ファイル・システムはパフォーマンスを上昇させるために、実際にデータの 書き込みが終っていないのに write(2) に成功を返すかもしれない。エラー情報はそれ以後の write 操作の時か ファイルのクローズする時に報告されることが保証される。 ファイルをクローズする時に返り値をチェックしないと気付かないうちに データを失ってしまうかもしれない。これは特に NFS やディスク・クォータを 使用した場合に見られる。

関連項目
open(2), fcntl(2), shutdown(2), unlink(2), fclose(3).