名前
remove - 名前を削除し、可能であればその名前が参照しているファイルも削除する
書式
#include <stdio.h>
int remove(const char *pathname);
説明
remove() はファイルシステムからファイル名を削除する。 ファイルに対しては unlink(2) を、ディレクトリに対しては rmdir(2) を呼び出す。
もしその名前が ファイルへの最後のリンクで、かつ、どのプロセスもそのファイルを 開いていないなら、ファイルも削除する。ファイルの占めていた 領域は他で使うことができるようになる。
名前がファイルへの最後のリンクであっても、どこかのプロセスが そのファイルを開いているなら、ファイルの最後のファイル記述子 (file descriptor) が閉じられるまでファイルは存在し続ける。
名前が指しているのがシンボリックリンクなら、そのリンクを削除する。
名前が指しているのがソケット、fifo、デバイスなら、名前は削除されるが、 そのソケットなどを開いているプロセスはそのまま使い続けることができる。
返り値
成功すれば 0 が返る。エラーなら -1 が返り、 errno に適切な値がセットされる。
エラー
発生するエラーは unlink(2) および rmdir(2) と同じものである。
準拠
C89, C99, 4.3BSD, POSIX.1-2001.
注意
libc4 と libc5 においては、 remove() は unlink(2) の別名であった (従ってディレクトリを削除できなかった)。
バグ
NFS プロトコルの根本的な不都合により、使用中のファイルが、 想定できない形で削除されることがありえる。
関連項目
rm(1), link(2), mknod(2), open(2), rename(2), rmdir(2), unlink(2), mkfifo(3), unlink(8)