SYSCONF - Linux手册页

时间:2019-08-20 18:01:29  来源:igfitidea点击:

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)。

InterfaceAttributeValue
sysconf()Thread safetyMT-Safe env

遵循规范

POSIX.1-2001,POSIX.1-2008。

BUGS

使用ARG_MAX非常困难,因为未指定用户的环境变量消耗了exec(3)的参数空间量。

一些返回的值可能很大;它们不适合分配内存。

另外参见

bc(1),expr(1),getconf(1),locale(1),confstr(3),fpathconf(3),pathconf(3),posixoptions(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/