sysconf / pathconf:用于运行时确定特定系统实际支持的限制值
- sysconf 函数的参数格式: “_SC_ + 限制项名称”,如:CHILD_MAX 限制值指每个实际用户 ID 可以启动的最大进程数,调用 sysconf(_SC_CHILE_MAX) 即可获得其实时限制值
- pathconf 函数的参数格式: “_PC_ + 限制项名称“,格式类似,如:LINK_MAX 指单个文件的最大硬链接数,因不同的文件系统中的限制不同,所以此值与文件所在的路径位置有关,调用 pathconf(“/home/xxx.file", _PC_LINK_MAX)可获得其限制值
#include <unistd.h> long sysconf(int name) long pathconf(const char *path, int name) long lpathconf(const char *path, int name) long fpathconf(int fd, int name)
适用于 sysconf 的限制项(引用时添加 _SC_ 前缀)如下:
- CHILD_MAX:单个进制可以同时运行的进程数量
- CLK_TCK:每秒种滴答数
- HOST_NAME_MAX:gethostbyname 函数返回的主机名最大长度
- IOV_MAX:readv、writev 等分散/聚离 IO 函数可以使用的 iovec 结构体最大数量
- OPEN_MAX:单个进程可以打开的最大文件数量
- PAGE_SIZE:内存分页大小
- RE_DUP_MAX:正则表达式使用 {m, n} 形式表示重复次数时,函数 regexec 和 regcomp 可以处理的上限值,即 n 的值
- SEM_NSEMS_MAX:单个进程可以使用的信号量最大数量
- SEM_VALUE_MAX:单个信号量可以注册的最大值
- SYMLOOP_MAX:解析路径时,可以遍历的符号链接的数量上限(系统防止无限循环)
- TIMER_MAX:每个进程的最大定时器个数
适用于 pathconf 的限制项(引用时添加 _PC_ 前缀)如下:
- LINK_MAX:以普通文件为对象,表示单个文件可以关联的最大硬链接数量
- NAME_MAX:只能以目录为对象,pathconf 函数的返回值表示该目录下的文件名称可以包含的最大字节数(不含末尾的 null 字符)
- PATH_MAX:只能以目录为对象,pathconf 函数的返回值表示该跟径名称的最大长度(若指定的是相对目录,则返回的是相对路径的最大长度限制,而不是对应的绝对路径限制)