pathconf 或 fpathconf 子例程

用途

检索文件实现特征。

标准 C 库 (libc.a)

语法

#include <unistd.h>
long pathconf ( Path,  Name)
const char *Path;
int Name;
long fpathconf( FileDescriptor, Name)
int FileDescriptorName;

描述

pathconf 子例程允许应用程序确定由 Path 参数指定的文件所包含的文件系统支持的操作的特征。 不需要指定文件的读,写或执行许可权,但必须可搜索指向该文件的路径中的所有目录。

fpathconf 子例程允许应用程序检索打开文件的相同信息。

参数

描述
路径 指定路径名。
FileDescriptor 指定打开的文件描述符。
名称 指定要查询的配置属性。 如果此属性不适用于由 PathFileDescriptor 参数指定的文件,那么 pathconf 子例程将返回错误。 Name 参数的符号值在 unistd.h 文件中定义:
_PC_LINK_MAX
指定指向文件的最大链接数。
_PC_MAX_CANON
指定规范输入行中的最大字节数。 此值仅适用于终端设备。
_PC_MAX_INPUT
指定输入队列中允许的最大字节数。 此值仅适用于终端设备。
_PC_NAME_MAX
指定文件名中的最大字节数,不包含终止空字符。 此数字可以在 14 到 255 之间。 此值仅适用于目录文件。
_PC_PATH_MAX
指定路径名中的最大字节数,包括终止空字符。
_PC_PIPE_BUF
指定保证以原子方式写入的最大字节数。 此值仅适用于先进先出 (FIFO)。
_pc_chown_restricted
如果 chown 子例程的使用仅限于具有相应特权的进程,并且如果 chown 子例程仅限于将文件的组标识更改为进程的有效组标识或其一个补充组标识,那么返回 0。

如果 XPG_SUS_ENV 设置为 ON ,那么 _PC_CHOWN_RESTRICTED 将返回大于零的值。

_PC_NO_TRUNC
如果长组件名称被截断,那么返回 0。 此值仅适用于目录文件。

如果 XPG_SUS_ENV 设置为 ON ,那么 _PC_NO_TRUNC 将返回大于零的值。

_PC_VDISABLE
这始终是 0。 未定义禁用字符。 此值仅适用于终端设备。
_pc_aix_disk_partition(磁盘分区
确定磁盘的物理分区大小。
注: _PC_AIX_DISK_PARTITION 变量仅对 root 用户可用。
磁盘大小
确定磁盘大小 (以兆字节计)。
注: _PC_AIX_DISK_SIZE 变量仅对 root 用户可用。
_pc_filesizebits
以带符号整数形式返回保存文件系统的最大文件大小所需的最小位数。 返回的最小值为 32
_PC_SYNC_IO
如果文件系统不支持 同步输入和输出 选项,那么返回 -1 。 如果文件系统支持此选项,那么将返回除 -1 以外的任何值。
注意:
  1. 如果 Name 参数的值为 _PC_LINK_MAX,并且如果 PathFileDescriptor 参数引用目录,那么返回的值将应用于目录本身。
  2. 如果 Name 参数的值为 _PC_NAME_MAX_PC_NO_TRUNC,并且如果 PathFileDescriptor 参数引用目录,那么返回的值将应用于目录中的文件名。
  3. 如果 Name 参数具有值 (如果 _PC_PATH_MAX) ,并且如果 PathFileDescriptor 参数引用的目录是工作目录,那么返回的值是相对路径名的最大长度。
  4. 如果 Name 参数的值为 _PC_PIPE_BUF ,并且如果 Path 参数引用 FIFO 特殊文件或 FileDescriptor 参数引用管道或 FIFO 特殊文件,那么返回的值将应用于引用的对象。 如果 PathFileDescriptor 参数引用目录,那么返回的值将应用于该目录中存在或可以创建的任何 FIFO 特殊文件。
  5. 如果 Name 参数的值为 _PC_CHOWN_RESTRICTED,并且如果 PathFileDescriptor 参数引用目录,那么返回的值将应用于该目录中存在或可以创建的任何文件 (目录除外)。

返回值

如果 pathconffpathconf 子例程成功,那么将返回指定的参数。 否则,将返回 -1 的值,并设置 errno 全局变量来指示错误。 如果名称参数对应的变量没有限制路径参数或 FileDescriptor 参数, pathconffpathconf 子程序都会返回 -1 ,而不会改变 errno 全局变量。

错误代码

如果发生以下错误,那么 pathconffpathconf 子例程将失败:

描述
EINVAL name 参数指定未知或不适用的特征。

如果发生以下任何错误,那么 pathconf 子例程也可能失败:

描述
EACCES 拒绝对路径前缀的组件的搜索许可权。
EINVAL 该实现不支持 Name 参数与指定文件的关联。
ENAMETOOLONG Path 参数字符串的长度超过 PATH_MAX 值。
ENAMETOOLONG 符号链接的 Pathname 解析生成了长度超过 PATH_MAX的中间结果。
ENOENT 指定的文件不存在,或者 Path 参数指向空字符串。
ENOTDIR 路径前缀的组件不是目录。
ELOOP 解析路径时迂到太多符号链接。

如果发生以下任一错误,那么 fpathconf 子例程可能会失败:

描述
EBADF 文件描述符 参数无效。
EINVAL 该实现不支持 Name 参数与指定文件的关联。