書式
#include <unistd.h>int rmdir(const char *pathname);
説明
rmdir() はディレクトリを削除する。削除するディレクトリは空でなければならない。返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。エラー
- EACCES
- pathname を含んでいるディレクトリへの書き込みアクセスが プロセスの実効 (effective) UID に対して許可されていないか、 pathname に含まれているディレクトリのどれかに検索 (実行) 許可がないか、 pathname に至るまでのディレクトリのいずれかに対する検索許可がなかった。 (path_resolution(7) も参照のこと)
- EBUSY
- pathname がシステムや別のプロセスにより使用中で削除することができない。 Linux では、 pathname がマウントポイントとして使用されているか、 呼び出したプロセスのルートディレクトリであることを意味する。
- EFAULT
- pathname がアクセス可能なアドレス空間の外を指している。
- EINVAL
- pathname の最後のディレクトリ部分が . である。
- ELOOP
- pathname を解決する際に遭遇したシンボリックリンクが多過ぎる。
- ENAMETOOLONG
- pathname が長過ぎる。
- ENOENT
- pathname の中のディレクトリ部分が存在しないか、壊れた (dangling) シンボリックリンク (symbolic link) である。
- ENOMEM
- 十分なカーネルメモリーがない。
- ENOTDIR
- pathname か pathname に含まれているディレクトリ部分が、実際には、ディレクトリでない。
- ENOTEMPTY
- ディレクトリ pathname に . と .. 以外のエントリがある。または、 pathname を構成する最後の要素が .. である。 POSIX.1-2001 は、この状況で EEXIST を返すことを認めている。
- EPERM
- pathname を含んでいるディレクトリにスティッキービット(sticky-bit) (S_ISVTX) が設定されていて、プロセスの実効ユーザーID が削除しようとするファイルの ユーザID とそのファイルを含むディレクトリのユーザーID のどちらとも異なり、 プロセスも権限 (Linux では CAP_FOWNER ケーパビリティ) がない。
- EPERM
- pathname を含んでいるファイルシステムがディレクトリの 削除をサポートしていない。
- EROFS
- pathname が読み込み専用のファイルシステム上のディレクトリを参照している。
準拠
SVr4, 4.3BSD, POSIX.1-2001.バグ
NFS プロトコルに潜在している欠陥によって、まだ使用中のディレクトリが 突然消滅する現象が引き起こされることがある。この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。