構文
#include <unistd.h>
int close(int fildes);
説明
close() は、 fildes で示されるファイル記述子をクローズします。 fildes は、 creat(), open(), dup(), fcntl() または pipe() システムコールで得られるファイル記述子です。 lockf() 関数を使用してプロセスがロックしたすべてのファイルセグメントは、
解放 (アンロック) されます。
戻り値
正常終了すると、 close() は 0 の値を返します。
失敗すると -1 を返し、エラーの種類を示す値が errno にセットされます。
エラー
close() は、次の条件の場合に失敗します。
| [EBADF] | | fildes が、正しい開いているファイルの記述子でない場合 |
| [EINTR] | | aio 要求 (非同期入出力要求) が保留されている遅いデバイス、接続、またはファイルのクローズが、シグナルにより割り込まれた場合。 ファイル記述子は、開いたデバイス、接続、またはファイルを指したままです。 |
| [ENOSPC] | | ファイルシステムに十分な領域がない場合。 このエラーは、
NFS ファイルシステムのファイルをクローズする場合に発生することがあります。[ write() システムコールがローカルファイルシステムで実行されるときに、
データを保持するために新しいバッファーを割り当てる必要があれば、そのときに
バッファーをディスクにマップするとします。 このときにディスクがいっぱいであることが発見されると、 write() はエラーを返します。 write() システムコールが
NFS ファイルシステムで実行される場合は、( NFS の効率を改善するための) バッファーのための領域があるかどうかを調べるために、
NFS サーバーと通信せずに新しいバッファーが確保されます。 バッファーがサーバーに書き込まれたとき
(ファイルのクローズまたは バッファーがいっぱいのとき) にだけ、 ディスクがいっぱいであることが発見されます。 |
参照
creat(2), dup(2), exec(2), fcntl(2), lockf(2), open(2), pipe(2),
thread_safety(5)
標準準拠
close(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1