fpathconf函数用法详解
fpathconf函数简介
- 头文件包含
#include <unistd.h>
- 函数定义
long fpathconf(int fd , int name );
long pathconf(const char * path , int name );
fpathconf函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘fpathconf’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <unistd.h>
fpathconf函数详细描述
fpathconf ()获取打开文件描述符fd 的配置选项name的值
pathconf ()获取文件名path 的配置选项name的值
将name设置为下列常量之一,将返回以下配置选项:
- _PC_LINK_MAX 指向文件的最大链接数。如果fd或path引用一个目录,则该值应用于整个目录。对应的宏是_POSIX_LINK_MAX
- _PC_MAX_CANON 格式化输入行的最大长度,其中fd或path必须指向一个端子。对应的宏是_POSIX_MAX_CANON
- _PC_MAX_INPUT 输入线的最大长度,其中fd或path必须指向一个端子。对应的宏是_POSIX_MAX_INPUT
- _PC_NAME_MAX 进程允许创建的目录path或fd中文件名的最大长度。对应的宏是_POSIX_NAME_MAX
- _PC_PATH_MAX 当path或fd是当前工作目录时,相对路径名的最大长度。对应的宏是_POSIX_PATH_MAX
- _PC_PIPE_BUF 原子写入FIFO管道的最大字节数。对于fpathconf (),fd应指管道或FIFO。对于fpathconf (),path应指FIFO或目录;在后一种情况下,返回的值对应于该目录中创建的FIFOs。对应的宏是_POSIX_PIPE_BUF
- 如果使用chown (2)和fchown (2)更改文件的用户ID仅限于具有适当权限的进程,并且将文件的组ID更改为进程的有效组ID或其补充组ID之一以外的值仅限于具有适当权限的进程,则 _PC_CHOWN_RESTRICTED 返回一个正值。根据POSIX1,该变量应始终使用-1以外的值定义。对应的宏是_POSIX_CHOWN_RESTRICTED .ip如果fd或path引用一个目录,则返回值应用于该目录中的所有文件。
- 如果访问长于 _POSIX_NAME_MAX 的文件名生成错误, _PC_NO_TRUNC 返回非零。对应的宏是_POSIX_NO_TRUNC
- 如果可以禁用特殊字符处理,则 _PC_VDISABLE 返回非零,其中fd或path必须引用终端。
fpathconf函数返回值
这些函数的返回值是下列值之一:
- 当出现错误时,返回-1,并设置errno来指示错误的原因(例如,EINVAL 指示name无效)。
- 如果name对应于一个最大或最小限制,并且该限制是不确定的,则返回-1并且不更改errno。(为了区分不确定的限制和错误,在调用之前将errno设置为零,然后在返回-1时检查errno是否为非零。)
- 如果name对应于一个选项,则如果支持该选项,则返回一个正值,如果不支持该选项,则返回-1。
- 否则,返回选项或限制的当前值。此值不会比编译应用程序时在
或 中向应用程序描述的相应值更具限制性。
fpathconf函数错误码
- path 路径前缀中的某个目录的 EACCES ( pathconf ())搜索权限被拒绝
- EBADF ( fpathconf ()) fd不是有效的文件描述符。
- EINVAL name无效。
- EINVAL 实现不支持name与指定文件的关联。
- 解析path 时遇到太多符号链接
- ENAMETOOLONG ( pathconf ()) path太长。
- ENOENT ( pathconf ()) path的组件不存在,或者path是空字符串。
- ENOTDIR ( pathconf ())在path中用作目录的组件实际上不是目录。
fpathconf函数其他说明
指定目录中可能存在名称长度大于name返回的值等于 _PC_NAME_MAX 的文件。
有些返回值可能很大;它们不适合分配内存。
评论区