Rechercher une page de manuel

Chercher une autre page de manuel:

close

Autres langues

Langue: ja

Version: 2001-12-13 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

名前

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

書式

 #include <unistd.h>
 
 int close(int fd);
 

説明

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

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

返り値

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

エラー

EBADF
fd が有効なオープンされたディスクリプターでない。
EINTR
close() コールがシグナルにより中断 (interrupt) された。
EIO
I/O エラーが発生した。

準拠

SVr4, 4.3BSD, POSIX.1-2001.

注意

close() の返り値のチェックはよく省略されるが、 これは深刻なプログラミングエラーである。 前の write(2) 処理が最後の close() のときになって初めて通知される場合に、エラーが起きる可能性が高い。 ファイルクローズの際に返り値をチェックしないと、 気付かないうちにデータを失ってしまうかもしれない。 これは特に NFS やディスク・クォータを使用した場合に見られる。

クローズに成功しても、データがディスクに保存されたかどうかは 保証されない (カーネルが書きこみを遅延させることがあるので)。 ストリームがクローズされるときにバッファをフラッシュするかどうかは、 ファイルシステムによって異なる。 データが物理的に保存されることを確かにする必要がある場合には、 fsync(2) を使用すること (この時点ではディスクのハードウェアに依存する)。

関連項目

fcntl(2), fsync(2), open(2), shutdown(2), unlink(2), fclose(3)
Si les moustiques étaient des abeilles, ils ramèneraient du sang à la
ruche et la reine ferait du boudin.
-+- Philippe Geluck, Le chat -+-