スポンサーリンク

UNLINK(2) FreeBSD システムコールマニュアル UNLINK(2)

名称

unlink − ディレクトリエントリの削除

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <unistd.h>

int

unlink(const char *path);

解説

unlink() システムコールは、 path で指定されたリンクをディレクトリから削除 し、そのリンクで参照されていたファイルのリンク数を減らします。ファイルの リンク数が 0 になり、ファイルを開いているプロセスがなくなると、ファイルに 関連するすべてのリソースが再利用されます。最後のリンクが削除されたとき に、ファイルを開いているプロセスが 1 つ以上あると、リンクは削除されます が、ファイルの削除は、そのファイルへのすべての参照が閉じられるまで延期さ れます。 path 引数は、ディレクトリであってはなりません。

戻り値

関数 unlink() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

unlink() は、以下の場合に処理を失敗します。

       [ENOTDIR]

パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。

[ENOENT]
指定されたファイルが存在しません。

[EACCES]
前置パス名の構成要素について検索許可が拒否されていま す。

[EACCES]
削除するリンクを含むディレクトリで、書込み許可が拒否さ れています。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

[EPERM]
指定されたファイルがディレクトリになっています。

[EPERM]
指定されたファイルはそれが変更不可 (immutable) である か追加専用 (append-only) のフラグが設定されています。 詳しい情報に関しては chflags(2) マニュアルページを参照 してください。

[EPERM]
ファイルを含むディレクトリがスティッキとマークされ、削 除するファイルを含むディレクトリまたはファイルが、有効 なユーザ ID に所有されていません。

[EBUSY]
リンクを削除するエントリが、マウント済みファイルシステ ムのマウントポイントです。

[EIO]
ディレクトリエントリの削除中か、inode の割り当て解除中 に入出力エラーが発生しました。

[EROFS]
指定されたファイルは読取り専用ファイルシステム上にあり ます。

[EFAULT]
path
引数が、プロセスに割り当てられたアドレス空間の範 囲外を指しています。

関連項目

chflags(2), close(2), link(2), rmdir(2), symlink(7)

歴史

unlink() 関数は、 Version 6 AT&T UNIX で登場しました。

従来の unlink() システムコールでは、スーパユーザがディレクトリを削除でき てしまい、これによってファイルシステムの完全性が破壊されることがありまし た。それを実行することは、すでに許可されなくなっています。

FreeBSD 10.0 February 23, 2005 FreeBSD 10.0

スポンサーリンク