Unix-system-calls-close

提供:Dev Guides
移動先:案内検索

[top]#

|http://www.google.com/[Google] | a|

Web This Site
  • 初心者向けのUnix *
  • 高度なUnix *

選択した読書

Copyright©2014 by finddevguides

[cols=",,,,,,,",]

| |  Home   | |  References   | |  Discussion Forums   | |  About TP  

[width="100%",cols="100%",]

a| == close()-Unix、Linuxシステムコール

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] image:http://www.finddevguides.com/add- this.gif [AddThisソーシャルブックマークボタン]

広告

NAME

close-ファイル記述子を閉じます

概要

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

説明

*close* ()はファイル記述子を閉じて、ファイルを参照せずに再利用できるようにします。 プロセスに関連付けられて所有されているファイルに保持されているレコードロック( *fcntl* (2)を参照)は削除されます(ロックの取得に使用されたファイル記述子に関係なく)。

_fd_が特定のファイル記述子の最後のコピーである場合、それに関連付けられているリソースは解放されます。記述子が unlink (2)を使用して削除されたファイルへの最後の参照であった場合、ファイルは削除されます。

返り値

*close* ()は成功するとゼロを返します。 エラーの場合、-1が返され、_errno_が適切に設定されます。

エラー

Tag Description
EBADF fd isn’t a valid open file descriptor.
*EINTR * The* close*() call was interrupted by a signal.
EIO An I/O error occurred.

準拠

SVr4、4.3BSD、POSIX.1-2001。

ノート

*close* ()の戻り値をチェックしないことは一般的ですが、それでも重大なプログラミングエラーです。 前の *write* (2)操作のエラーが最後の *close* ()で最初に報告される可能性は十分にあります。 ファイルを閉じるときに戻り値をチェックしないと、データが無言で失われる可能性があります。 これは、NFSおよびディスククォータで特に見られます。

カーネルが書き込みを延期するため、正常に終了しても、データがディスクに正常に保存されたとは限りません。 ストリームが閉じられたときにファイルシステムがバッファをフラッシュすることは一般的ではありません。 データが物理的に保存されていることを確認する必要がある場合は、 fsync (2)を使用します。 (この時点では、ディスクハードウェアに依存します。)

関連項目

[[File:]] image :http://www.finddevguides.com/images/next.gif [next] [[File:]]

広告

|  

[cols="^",]

|Advertisements