REMOVE(3)

名前
remove - 名前を削除して、参照しているファイルもできれば削除する。

書式
#include <stdio.h>

int remove(const char *pathname);

説明
remove はファイルシステムからファイル名を削除する。もしその名前が ファイルへの最後のリンクで、かつ、どのプロセスもそのファイルを 開いていないなら、ファイルも削除する。ファイルの占めていた 領域は他で使うことができるようになる。 名前がファイルへの最後のリンクであっても、どこかのプロセスが そのファイルを開いているなら、ファイルの最後のファイル記述子 (file descriptor) が閉じられるまでファイルは存在し続ける。 名前が指しているのがシンボリックリンクなら、そのリンクを削除する。 名前が指しているのがソケット、fifo、デバイスなら、名前は 削除するが、そのソケットなどを開いているプロセスはそのまま使い続ける ことができる。

返り値
成功すれば 0 が返る。エラーなら -1 が返り、 errno に適切な数字がセットされる。

エラー

EFAULT
    pathnameが、アクセス可能なアドレス空間から外れている。

EACCES
    このプロセスの実効 uid では、 pathname のあるディレクトリに書き込み権限がない。または、 pathname のディレクトリのどれか対してサーチ(実行)権限がない。

EPERM
    pathname のディレクトリに sticky-bit (S_ISVTX) が立っており、プロセスの実効 uid が、そのディレクトリや 削除するファイルの uid ではない。または、 pathname がディレクトリである。

ENAMETOOLONG
    pathnameが長すぎる。

ENOENT
    pathname に含まれるディレクトリのどれかが、存在しないか、 参照先の無いシンボリックリンクになっている。

ENOTDIR
    pathname を構成するディレクトリ部分が、実際はディレクトリではない。

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

ENOMEM
    カーネルメモリが足りない。

EROFS
    pathname が、リードオンリーなファイルシステム上のファイルを指している。

準拠
ANSI C、SVID、AT&T、POSIX、X/OPEN、BSD 4.3

バグ
NFS プロトコルの根本的な不都合により、使用中のファイルが、 想定できない形で削除されることがありえる。

関連項目
unlink(2)、rename(2)、open(2)、rmdir(2)、 mknod(2)、mkfifo(3)、link(2)、rm(1)、unlink(8)。