sysconf 子例程

用途

确定指定系统限制或选项的当前值。

标准 C 库 (libc.a)

语法

#include <unistd.h>
long int sysconf ( Name)
int Name;

描述

sysconf 子例程确定某些系统参数的当前值,可配置的系统限制或是否支持可选功能部件。 Name 参数表示要查询的系统变量。

参数

描述
名称 指定应返回的系统变量设置。 Name 参数的有效值在 limits.htime.hunistd.h 文件中定义,描述如下:
描述
_SC_AIO_LISTIO_MAX 可以在列表 "输入" 和 "输出" 调用中指定的最大输入和输出操作数。
_SC_AIO_MAX 未完成的异步输入和输出操作的最大数目。
_SC_AIX_增强亲缘关系 确定是否启用增强亲缘关系服务。
_SC_ASYNCHRONOUS_IO 实现支持 "异步输入和输出" 选项。
_SC_ARG_MAX 指定其中一个 exec 函数 (包括环境数据) 的自变量的最大字节长度。
_SC_BC_BASE_MAX 指定 ../b_commands/bc.html 允许的最大变量数 ibaseobase
_SC_BC_DIM_MAX 指定 bc 命令允许数组中的最大元素数。
_SC_BC_SCALE_MAX 指定 bc 命令允许的最大 scale 变量。
_SC_BC_STRING_MAX 指定 bc 命令允许的字符串常量的最大长度。
_SC_CHILD_MAX 指定每个实际用户标识的并发进程数。
_SC_CLK_TCK 指示由 time.h 文件中的 CLK_TCK 定义的时钟滴答增量。
_SC_COLL_WEIGHTS_MAX 指定可以分配给语言环境定义文件中 LC_COLLATE 关键字的条目的最大权重数。
_SC_DELAYTIMER_MAX 最大计时器到期过速次数。
_SC_EXPR_NEST_MAX 指定 expr 命令可以嵌套在括号内的最大表达式数。
_SC_JOB_CONTROL 如果定义了此符号,那么支持作业控制。
_SC_IOV_MAX 指定一个进程可用于 readvwritev 子例程的 iovec 结构的最大数目。
_SC_LARGE_PAGESIZE 大页面的大小 (以字节计)。
_SC_LINE_MAX 指定当命令描述为处理文本文件时,命令的输入行 (标准输入或其他文件) 的最大字节长度。 长度包含换行字符空间。
_SC_LOGIN_NAME_MAX 登录名的最大长度。
_SC_MQ_OPEN_MAX 打开消息队列描述符的最大数目。
_SC_MQ_PRIO_MAX 最大消息优先级数。
_SC_MEMLOCK 实现支持 "进程内存锁定" 选项。
_SC_MEMLOCK_RANGE 实现支持 "范围内存锁定" 选项。
_SC_MEMORY_PROTECTION 实现支持内存保护选项。
_SC_MESSAGE_传递 实现支持 "消息传递" 选项。
_SC_NGROUPS_MAX 指定每个进程的最大同时补充组标识数。
_SC_OPEN_MAX 指定一个进程可以在任何时候打开的最大文件数。
_SC_PASS_MAX 指定密码中的最大有效字符数 (不包括终止空字符)。
_SC_PASS_MAX 密码中的最大有效字节数。
_SC_PAGESIZE 相当于 _SC_PAGE_SIZE。
_SC_PAGE_SIZE 页面大小 (以字节为单位)。
_SC_优先级划分 实现支持 "优先输入和输出" 选项。
_SC_PRIORITY_SCHEDULING 实现支持 "进程调度" 选项。
_SC_RE_DUP_MAX 指定使用 \ { m时允许的正则表达式重复出现的最大次数。 n \} 区间表示法。
_SC_RTSIG_MAX 保留供应用程序使用的最大实时信号数。
描述
_SC_REALTIME_信号灯 实现支持 "实时信号扩展" 选项。
_SC_SAVED_IDS 如果定义了此符号,那么每个进程都具有已保存的 set-user 标识和 set-group 标识。
_SC_SEM_NSEMS_MAX 每个进程的最大 Semaphores 数。
_SC_SEM_VALUE_MAX 信号量可能具有的最大值。
_SC_SEMAPHORES 实现支持 Semaphores 选项。
_SC_SHARED_MEMORY_OBJECTS 实现支持 "共享内存对象" 选项。
_SC_SIGQUEUE_MAX 进程可以发送且随时处于暂挂状态的最大信号数。
_SC_STREAM_MAX 指定一个进程可以同时打开的最大流数。
_SC_SYNCHRONIZED_IO 实现支持 "同步输入和输出" 选项。
_SC_TIMER_MAX 每个进程的最大计时器数。
_SC_TIMERS 实现支持 "计时器" 选项。
_SC_TZNAME_MAX 指定时区名称支持的最大字节数 (不是 TZ 值)。
_SC_VERSION 指示已实现 POSIX 标准的版本或修订版号,以指示 IEEE 标准委员会核准该标准的 4 数字年份和 2 数字月份。 此值当前是长整数 198808。
_SC_XBS5_ILP32_OFF32 实现提供 32 位 int , long , pointer 和 off_t 类型的 C 语言编译环境。
_SC_XBS5_ILP32_OFFBIG 实现提供具有 32 位 int , long 和 pointer 类型的 C 语言编译环境,以及使用至少 64 位的 off_t 类型。
_SC_XBS5_LP64_OFF64 实现提供了具有 32 位 int 和 64 位 long , pointer 和 off_t 类型的 C 语言编译环境。
_SC_XBS5_LPBIG_OFFBIG 实现为 C 语言编译环境提供了使用至少 32 位的 int 类型和使用至少 64 位的 long , pointer 和 off_t 类型的 int 类型。
_SC_XOPEN_CRYPT 指示系统支持 X/Open 加密功能部件组。
_SC_XOPEN_LEGACY 该实现支持旧功能部件组。
_SC_XOPEN_REALTIME 该实现支持 X/Open 实时功能部件组。
_SC_XOPEN_REALTIME_THREADS 该实现支持 X/Open 实时线程功能部件组。
_SC_XOPEN_ENH_I18N 指示系统支持 X/Open 增强型国际化功能部件组。
_SC_XOPEN_SHM 指示系统支持 X/Open 共享内存功能部件组。
_SC_XOPEN_VERSION 指示已实现 X/Open 标准的版本或修订版号。
_SC_XOPEN_XCU_VERSION 指定用于描述 XCU 规范的当前版本的值。
_SC_ATEXIT_MAX 指定 atexit 子例程的最大注册函数数。
_SC_PAGE_SIZE 指定内存的页面大小粒度。
_SC_AES_OS_VERSION 指示 OSF AES 版本。
_SC_2_VERSION 指定描述当前版本的 POSIX.2的值。
_SC_2_C_BIND 指示系统支持 C 语言绑定选项。
_SC_2_C_CHAR_TERM 指示系统至少支持一种终端类型。
_SC_2_C_DEV 指示系统支持 C 语言开发实用程序选项。
_SC_2_C_VERSION 指定使用 C 语言绑定描述当前版本的 POSIX.2 的值。
_SC_2_FORT_DEV 指示系统支持 FORTRAN 开发实用程序选项。
_SC_2_FORT_RUN 指示系统支持 FORTRAN 开发实用程序选项。
_SC_2_LOCALEDEF 指示系统支持创建语言环境。
_SC_2_SW_DEV 指示系统支持 "软件开发实用程序选项"。
_SC_2_UPE 指示系统支持用户可移植性实用程序选项。
_SC_NPROCESSORS_CONF 已配置的处理器数。
_SC_NPROCESSORS_ONLN 联机处理器数。
_SC_THREAD_DATAKEYS_MAX 可以在进程中定义的最大数据密钥数。
描述
_SC_THREAD_析构迭代 尝试销毁特定于线程的数据的最大次数。
_SC_THREAD_KEYS_MAX 每个进程的最大数据密钥数。
_SC_THREAD_STACK_MIN 线程堆栈大小的最小值。
_SC_THREAD_THREADS_MAX 进程中的最大线程数。
_SC_REENTRANT_FUNCTIONS 系统支持重入函数 (重入函数必须在多线程应用程序中使用)。
_SC_THREADS 系统支持 POSIX 线程。
_SC_THREAD_ATTR_STACKADDR 系统支持 POSIX 线程的堆栈地址选项 (线程的 stackaddr 属性)。
_SC_THREAD_ATTR_STACKSIZE 系统支持 POSIX 线程的堆栈大小选项 (线程的堆栈大小属性)。
_SC_THREAD_PRIORITY_SCHEDULING 系统支持 POSIX 线程的优先级调度。
_SC_THREAD_PRIO_INHERIT 系统支持 POSIX 线程的优先级继承协议 (针对互斥对象的优先级反转协议)。
_SC_THREAD_PRIO_PROTECT 系统支持 POSIX 线程的优先级上限协议 (互斥对象的优先级反转协议)。
_SC_THREAD_PROCESS_SHARED 系统支持 POSIX 线程的进程共享选项 (互斥对象和条件的 pshared 属性)。
_SC_TTY_NAME_MAX 终端设备名称的最大长度。
_SC_SYNCHRONIZED_IO 实现支持 同步输入和输出 选项。
_SC_FSYNC 实现支持 文件同步 选项。
_SC_MAPPED_FILES 实现支持 内存映射文件 选项。
_SC_LPAR_ENABLED 指示是否启用 LPAR。
_SC_AIX_KERNEL_BITMODE 确定内核是 32 位还是 64 位。
_SC_AIX_REALMEM 确定实内存量 (以千字节为单位)。
_SC_AIX_HARDWARE_BITMODE 确定机器是 32 位还是 64 位。
_ SC_AIX_MP_CAPABLE 确定硬件是否支持 MP。
注: _SC_AIX_MP_CAPABLE 变量仅对 root 用户可用。
_SC_AIX_UKEYS 可用的用户密钥数。 值 0 指示用户密钥及其管理界面不可用。
注: _SYNCHRONIZED_IO_SC_FSYNCSC_MAPPED_FILES 命令适用于操作系统 V 4.3 和更高发行版。

系统支持的变量返回的值在进行调用的进程的生命周期内不会更改。

返回值

如果 sysconf 子例程成功,那么将返回系统变量的当前值。 返回的值不能比 limits.htime.hunistd.h 文件在编译时对应用程序描述的相应值更严格。 在调用进程的生存期内,返回的值不会更改。 如果sysconf子程序不成功,则返回值为-1。

错误代码

如果Name参数无效,则返回值为-1,并设置errno全局变量来指示错误。 如果Name参数有效,但属于系统不支持的变量,则返回值为-1,并将Erno全局变量设置为EINVAL。 如果系统变量_SC_AIX_MP_CAPABLE被非root 用户访问,则返回值为-1,全局变量errno则表示出错

文件

描述
/usr/include/limits.h 包含系统定义的限制。