侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

fpathconf函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 46 阅读 / 1,059 字 / 正在检测是否收录...

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的值
中定义的相应宏为最小值;如果应用程序希望利用可能更改的值,可以调用fpathconf ()或pathconf (),这可能会产生更自由的结果。
将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 的文件。
有些返回值可能很大;它们不适合分配内存。

0

评论区