rmdir 子例程
用途
除去目录。
库
标准 C 库 (libc.a)
语法
#include <unistd.h> int rmdir ( Path)
const char *Path;
const char *Path;
描述
Rmdir 子例程除去由 路径 参数指定的目录。 如果系统上安装了网络文件系统 (NFS) ,那么此路径可以跨入另一个节点。
要使 Rmdir 子例程成功执行,调用进程必须具有对 路径 参数的父目录的写访问权。
此外,如果 Path 的父目录具有 粘性位属性 (在 sys/mode.h 文件中描述) ,那么调用进程必须具有下列其中一项:
- 与要除去的目录相同的有效用户标识
- 一个有效用户标识,等于 路径 的父目录的所有者标识
- root 用户权限。
参数
| 项 | 描述 |
|---|---|
| 路径 | 指定目录路径名. 您指定的目录必须是:
|
返回值
成功完成后, Rmdir 子例程将返回值 0。 否则,返回值为-1,指定的目录不会被更改,并设置errno全局变量来指示错误。
错误代码
如果发生以下错误,那么 Rmdir 子例程将失败并且不会删除该目录:
| 项 | 描述 |
|---|---|
| EACCES | 在路径前缀的组件上没有搜索许可权,或者在要除去的目录的父目录上没有写许可权。 |
| EBUSY | 该目录正被用作安装点。 |
| EEXIST 或 ENOTEMPTY | 由 路径 参数指定的目录不为空。 |
| ENAMETOOLONG | 路径 参数的长度超过 PATH_MAX个; 或者路径名组件的长度超过 NAME_MAX 个且 POSIX_NO_TRUNC 个。 |
| ENOENT | 由 路径 参数指定的目录不存在,或者 路径 参数指向空字符串。 |
| ENOTDIR | 由 路径 参数指定的组件不是一个目录。 |
| EINVAL | 由 路径 参数指定的目录的格式不正确。 |
| EROFS | 由 路径 参数指定的目录驻留在只读文件系统上。 |
由于其他原因, Rmdir 子例程可能不成功。
如果 NFS 安装在系统上,那么如果以下情况成立,那么 rmdir 子例程将失败:
| 项 | 描述 |
|---|---|
| ETIMEDOUT | 连接已超时。 |