remove(3) ファイルやディレクトリを削除する

書式

#include <stdio.h>

int remove(const char *pathname);

説明

remove() はファイルシステムからファイル名を削除する。 ファイルに対しては unlink(2) を、ディレクトリに対しては rmdir(2) を呼び出す。

もしその名前が ファイルへの最後のリンクで、かつ、どのプロセスもそのファイルを 開いていないなら、ファイルも削除する。ファイルの占めていた 領域は他で使うことができるようになる。

名前がファイルへの最後のリンクであっても、どこかのプロセスが そのファイルを開いているなら、ファイルの最後のファイル記述子 (file descriptor) が閉じられるまでファイルは存在し続ける。

名前が指しているのがシンボリックリンクなら、そのリンクを削除する。

名前が指しているのがソケット、FIFO、デバイスの場合、名前は削除されるが、 そのソケットなどを開いているプロセスはそのまま使い続けることができる。

返り値

成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

発生するエラーは unlink(2) および rmdir(2) と同じものである。

属性

マルチスレッディング (pthreads(7) 参照)

関数 remove() はスレッドセーフである。

準拠

C89, C99, 4.3BSD, POSIX.1-2001.

注意

libc4 と libc5 においては、 remove() は unlink(2) の別名であった (従ってディレクトリを削除できなかった)。

バグ

NFS プロトコルに内在する問題により、まだ使用中のファイルが想定外に消えてしまうことがありえる。

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。