pathconf 或 fpathconf 子例程
用途
检索文件实现特征。
库
标准 C 库 (libc.a)
语法
#include <unistd.h>
long fpathconf( FileDescriptor, Name)
int FileDescriptor, Name;
int FileDescriptor, Name;
描述
pathconf 子例程允许应用程序确定由 Path 参数指定的文件所包含的文件系统支持的操作的特征。 不需要指定文件的读,写或执行许可权,但必须可搜索指向该文件的路径中的所有目录。
fpathconf 子例程允许应用程序检索打开文件的相同信息。
参数
| 项 | 描述 |
|---|---|
| 路径 | 指定路径名。 |
| FileDescriptor | 指定打开的文件描述符。 |
| 名称 | 指定要查询的配置属性。 如果此属性不适用于由 Path 或 FileDescriptor 参数指定的文件,那么 pathconf 子例程将返回错误。 Name 参数的符号值在 unistd.h 文件中定义:
|
注意:
- 如果 Name 参数的值为 _PC_LINK_MAX,并且如果 Path 或 FileDescriptor 参数引用目录,那么返回的值将应用于目录本身。
- 如果 Name 参数的值为 _PC_NAME_MAX 或 _PC_NO_TRUNC,并且如果 Path 或 FileDescriptor 参数引用目录,那么返回的值将应用于目录中的文件名。
- 如果 Name 参数具有值 (如果 _PC_PATH_MAX) ,并且如果 Path 或 FileDescriptor 参数引用的目录是工作目录,那么返回的值是相对路径名的最大长度。
- 如果 Name 参数的值为 _PC_PIPE_BUF ,并且如果 Path 参数引用 FIFO 特殊文件或 FileDescriptor 参数引用管道或 FIFO 特殊文件,那么返回的值将应用于引用的对象。 如果 Path 或 FileDescriptor 参数引用目录,那么返回的值将应用于该目录中存在或可以创建的任何 FIFO 特殊文件。
- 如果 Name 参数的值为 _PC_CHOWN_RESTRICTED,并且如果 Path 或 FileDescriptor 参数引用目录,那么返回的值将应用于该目录中存在或可以创建的任何文件 (目录除外)。
返回值
如果 pathconf 或 fpathconf 子例程成功,那么将返回指定的参数。 否则,将返回 -1 的值,并设置 errno 全局变量来指示错误。 如果名称参数对应的变量没有限制路径参数或 FileDescriptor 参数, pathconf 和 fpathconf 子程序都会返回 -1 ,而不会改变 errno 全局变量。
错误代码
如果发生以下错误,那么 pathconf 或 fpathconf 子例程将失败:
| 项 | 描述 |
|---|---|
| EINVAL | name 参数指定未知或不适用的特征。 |
如果发生以下任何错误,那么 pathconf 子例程也可能失败:
| 项 | 描述 |
|---|---|
| EACCES | 拒绝对路径前缀的组件的搜索许可权。 |
| EINVAL | 该实现不支持 Name 参数与指定文件的关联。 |
| ENAMETOOLONG | Path 参数字符串的长度超过 PATH_MAX 值。 |
| ENAMETOOLONG | 符号链接的 Pathname 解析生成了长度超过 PATH_MAX的中间结果。 |
| ENOENT | 指定的文件不存在,或者 Path 参数指向空字符串。 |
| ENOTDIR | 路径前缀的组件不是目录。 |
| ELOOP | 解析路径时迂到太多符号链接。 |
如果发生以下任一错误,那么 fpathconf 子例程可能会失败:
| 项 | 描述 |
|---|---|
| EBADF | 文件描述符 参数无效。 |
| EINVAL | 该实现不支持 Name 参数与指定文件的关联。 |