書式
#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
は、この状況で EEXIST
を返すことを認めている。
- EPERM
- pathname
を含んでいるディレクトリにスティッキービット(sticky-bit)
(S_ISVTX)
が設定されていて、プロセスの実効ユーザーID
が削除しようとするファイルの
ユーザーID
とそのファイルを含むディレクトリのユーザーID
のどちらとも異なり、
プロセスも権限 (Linux
では CAP_FOWNER
ケーパビリティ)
がない。
- EPERM
- pathname
を含んでいるファイルシステムがディレクトリの
削除をサポートしていない。
- EROFS
- pathname
が読み込み専用のファイルシステム上のディレクトリを参照している。
準拠
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.
バグ
NFS
プロトコルに潜在している欠陥によって、まだ使用中のディレクトリが
突然消滅する現象が引き起こされることがある。
関連項目
rm(1), rmdir(1), chdir(2), chmod(2),
mkdir(2), rename(2), unlink(2), unlinkat(2)
この文書について
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。