sysconf 子例程
用途
确定指定系统限制或选项的当前值。
库
标准 C 库 (libc.a)
语法
#include <unistd.h> long int sysconf ( Name)
int Name;
int Name;
描述
sysconf 子例程确定某些系统参数的当前值,可配置的系统限制或是否支持可选功能部件。 Name 参数表示要查询的系统变量。
参数
| 项 | 描述 |
|---|---|
| 名称 | 指定应返回的系统变量设置。 Name 参数的有效值在 limits.h, time.h和 unistd.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 允许的最大变量数 ibase 和 obase |
| _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 | 指定一个进程可用于 readv 和 writev 子例程的 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_FSYNC和 SC_MAPPED_FILES 命令适用于操作系统 V 4.3 和更高发行版。
系统支持的变量返回的值在进行调用的进程的生命周期内不会更改。
返回值
如果 sysconf 子例程成功,那么将返回系统变量的当前值。 返回的值不能比 limits.h, time.h或 unistd.h 文件在编译时对应用程序描述的相应值更严格。 在调用进程的生存期内,返回的值不会更改。 如果sysconf子程序不成功,则返回值为-1。
错误代码
如果Name参数无效,则返回值为-1,并设置errno全局变量来指示错误。 如果Name参数有效,但属于系统不支持的变量,则返回值为-1,并将Erno全局变量设置为EINVAL。 如果系统变量_SC_AIX_MP_CAPABLE被非root 用户访问,则返回值为-1,全局变量errno则表示出错
文件
| 项 | 描述 |
|---|---|
| /usr/include/limits.h | 包含系统定义的限制。 |