SYSCONF - Linux手册页
Linux程序员手册 第3部分
更新日期: 2019-05-09
名称
sysconf-在运行时获取配置信息
语法
#include <unistd.h> long sysconf(int name);
说明
POSIX允许应用程序在编译或运行时测试是否支持某些选项,或某些可配置常量或限制的值。
在编译时,这是通过包含和/或测试某些宏的值来完成的。
在运行时,可以使用当前函数sysconf()询问数值。可以使用fpathconf(3)和pathconf(3)来请求数值,该数值可能取决于文件所在的文件系统。可以使用confstr(3)询问字符串值。
从这些函数获得的值是系统配置常数。它们在过程的生命周期中不会改变。
对于选项,通常会有一个常量_POSIX_FOO可以在中定义。如果未定义,则应在运行时询问。如果将其定义为-1,则不支持该选项。如果将其定义为0,则存在相关的函数和标头,但必须在运行时询问可用的支持程度。如果将其定义为-1或0以外的其他值,则支持该选项。通常,值(例如200112L)指示描述该选项的POSIX版本的年和月。只要尚未发布POSIX修订版,Glibc就会使用值1表示支持。 sysconf()参数将为_SC_FOO。有关选项的列表,请参见posixoptions(7)。
对于变量或限制,通常会有一个常量_FOO(可能在中定义)或_POSIX_FOO(可能在中定义)。如果未指定限制,则不会定义该常数。如果定义了常量,则它提供一个保证值,并且实际上可能支持更大的值。如果应用程序希望利用可能在系统之间更改的值,可以调用sysconf()。 sysconf()参数将为_SC_FOO。
POSIX.1 variables
我们提供变量的名称,用于查询其值的sysconf()参数的名称以及简短说明。
首先,是POSIX.1兼容值。
- ARG_MAX- _SC_ARG_MAX
- exec(3)函数族的参数的最大长度。不得小于_POSIX_ARG_MAX(4096)。
- CHILD_MAX- _SC_CHILD_MAX
- 每个用户ID的最大同时进程数。不得小于_POSIX_CHILD_MAX(25)。
- HOST_NAME_MAX- _SC_HOST_NAME_MAX
- gethostname(2)返回的主机名的最大长度,不包括终止空字节。不得小于_POSIX_HOST_NAME_MAX(255)。
- LOGIN_NAME_MAX- _SC_LOGIN_NAME_MAX
- 登录名的最大长度,包括终止的空字节。不得小于_POSIX_LOGIN_NAME_MAX(9)。
- NGROUPS_MAX- _SC_NGROUPS_MAX
- 补充组ID的最大数量。
- clock ticks - _SC_CLK_TCK
- 每秒的时钟滴答数。相应的变量已过时。它当然被称为CLK_TCK。 (注意:宏CLOCKS_PER_SEC不提供信息:它必须等于1000000。)
- OPEN_MAX- _SC_OPEN_MAX
- 进程可以随时打开的最大文件数。不得小于_POSIX_OPEN_MAX(20)。
- PAGESIZE- _SC_PAGESIZE
- 页面大小(以字节为单位)。不得小于1。
- PAGE_SIZE- _SC_PAGE_SIZE
- PAGESIZE / _SC_PAGESIZE的同义词。 (PAGESIZE和PAGE_SIZE均在POSIX中指定。)
- RE_DUP_MAX- _SC_RE_DUP_MAX
- regexec(3)和regcomp(3)允许的BRE重复出现的次数。不得小于_POSIX2_RE_DUP_MAX(255)。
- STREAM_MAX- _SC_STREAM_MAX
- 进程可以随时打开的最大流数。如果定义,则其值与标准C宏FOPEN_MAX相同。不得小于_POSIX_STREAM_MAX(8)。
- SYMLOOP_MAX- _SC_SYMLOOP_MAX
- 解析之前在路径名中看到的最大符号链接数返回ELOOP。不得小于_POSIX_SYMLOOP_MAX(8)。
- TTY_NAME_MAX- _SC_TTY_NAME_MAX
- 终端设备名称的最大长度,包括终止的空字节。不得小于_POSIX_TTY_NAME_MAX(9)。
- TZNAME_MAX- _SC_TZNAME_MAX
- 时区名称中的最大字节数。不得小于_POSIX_TZNAME_MAX(6)。
- _POSIX_VERSION- _SC_VERSION
- 表示POSIX.1标准的批准日期和月份,格式为YYYYMML;值199009L表示1990年9月修订版。
POSIX.2 variables
接下来,使用POSIX.2值,为实用程序提供限制。
- BC_BASE_MAX- _SC_BC_BASE_MAX
- 表示bc(1)实用程序接受的最大obase值。
- BC_DIM_MAX- _SC_BC_DIM_MAX
- 指示bc(1)允许的数组中元素的最大值。
- BC_SCALE_MAX- _SC_BC_SCALE_MAX
- 表示bc(1)允许的最大比例值。
- BC_STRING_MAX- _SC_BC_STRING_MAX
- 表示bc(1)接受的字符串的最大长度。
- COLL_WEIGHTS_MAX- _SC_COLL_WEIGHTS_MAX
- 表示可以分配给语言环境定义文件中LC_COLLATE顺序关键字条目的最大权数。
- EXPR_NEST_MAX- _SC_EXPR_NEST_MAX
- 是expr(1)可以嵌套在括号内的最大表达式数。
- LINE_MAX- _SC_LINE_MAX
- 公用程序的输入行的最大长度,无论是来自标准输入还是来自文件。这包括尾随换行符的空间。
- RE_DUP_MAX- _SC_RE_DUP_MAX
- 使用间隔符号\ {m,n \}时,正则表达式重复出现的最大次数。
- POSIX2_VERSION- _SC_2_VERSION
- 以YYYYMML格式表示POSIX.2标准的版本。
- POSIX2_C_DEV- _SC_2_C_DEV
- 指示是否支持POSIX.2 C语言开发工具。
- POSIX2_FORT_DEV- _SC_2_FORT_DEV
- 指示是否支持POSIX.2 FORTRAN开发实用程序。
- POSIX2_FORT_RUN- _SC_2_FORT_RUN
- 指示是否支持POSIX.2 FORTRAN运行时实用程序。
- _POSIX2_LOCALEDEF- _SC_2_LOCALEDEF
- 指示是否支持通过localedef(1)的POSIX.2语言环境创建。
- POSIX2_SW_DEV- _SC_2_SW_DEV
- 指示是否支持POSIX.2软件开发实用程序选项。
这些值也存在,但可能不是标准值。
- - _SC_PHYS_PAGES
- 物理内存的页数。请注意,此值和_SC_PAGESIZE的值的乘积可能溢出。
- - _SC_AVPHYS_PAGES
- 物理内存的当前可用页数。
- - _SC_NPROCESSORS_CONF
- 配置的处理器数量。另请参见get_nprocs_conf(3)。
- - _SC_NPROCESSORS_ONLN
- 当前在线的处理器数量(可用)。另请参见get_nprocs_conf(3)。
返回值
sysconf()的返回值为以下之一:
- *
- 发生错误时,将返回-1并将errno设置为指示错误的原因(例如,EINVAL,指示名称无效)。
- *
- 如果名称对应于最大或最小限制,并且该限制不确定,则返回-1且errno不变。 (要区分不确定的限制和错误,请在调用之前将errno设置为零,然后在返回-1时检查errno是否为非零。)
- *
- 如果name对应于一个选项,则如果支持该选项,则返回正值;如果不支持该选项,则返回-1。
- *
- 否则,将返回期权或限制的当前值。此值的限制不会比在编译应用程序时或在编译应用程序时为应用程序描述的相应值更严格。
错误说明
- EINVAL
- 名称无效。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
sysconf() | Thread safety | MT-Safe env |
遵循规范
POSIX.1-2001,POSIX.1-2008。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。