UNLINK(2)

名前
unlink - 名前を削除する、場合によってはそれが参照している ファイルも削除する

書式
#include <unistd.h>

int unlink(const char *pathname);

説明
unlink はファイル・システム(filesystem)上の名前を削除する。もしその名前が ファイルへの最後のリンク(link)でありどのプロセスもそのファイルを オープン(open)していなければ、ファイルは削除される。ファイルが使用 していたディスク上の領域は再利用が可能になる。 もし削除する名前がファイルへの最後のリンクだがどれかのプロセスが そのファイルをまだオープンしている場合は、 そのファイルを参照している最後のファイル・ディスクリプター(file descriptor) がクローズ(close)されるまでファイルは存在し続ける。 もしその名前がシンボリック・リンク(symbolic link)を参照しれば、 リンクは削除される。 もし名前がソケット(socket)や fifo やデバイス(device)を参照していれば 名前は削除されるがそのオブジェクトをオープンしていたプロセスは それを使い続けることができる。

返り値
成功した場合はゼロを返す。エラーならば -1 を返し、 errno が適切に設定される。

エラー

EFAULT
    pathname がアクセス可能なアドレス空間の外を指している。

EACCES
    pathname を含んでいるディレクトリの書き込み許可がプロセスの実効(effective) ユーザーID に与えられていないか、 pathname の中のディレクトリのどれかに検索(実行)許可が与えられていない。

EPERM
    pathname を含んでいるディレクトリにスティッキー・ビット(sticky-bit) (S_ISVTX) が設定されていて、プロセスの実効ユーザーID が削除しようとするファイルの uid でもそれを含んでいるディレクトリのものでもない、または pathname がディレクトリである。

ENAMETOOLONG
    pathname が長過ぎる。

ENOENT
    pathname の中のディレクトリ部分が存在しないか壊れたシンボリック・リンクである。

ENOTDIR
    pathname のディレクトリ部分が、実際には、ディレクトリでない。

EISDIR
    pathname がディレクトリを参照している。

ENOMEM
    十分なカーネル(kernel)のメモリーが使用できない。

EROFS
    pathname が読み込み専用のファイル・システムのファイルを参照している。

ELOOP
    pathname を解決する際に遭遇したシンボリック・リンクが多過ぎる。

EIO I/O エラーが発生した。

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

バグ
NFS プロトコル(protocol)の潜在的な不良によりまだ使用中のファイルの 突然の消滅を引き起こすことがある。

関連項目
link(2), rename(2), open(2), rmdir(2), mknod(2), mkfifo(3), remove(3), rm(1)