sysconf函数用于找到一个特定系统实际支持的限制值。函数原型如下:
#include <unistd.h>
long sysconf(int name);
name代表限制名常量,是一些整数,分别代表一个限制名。
例如,_SC_LOGIN_NAME_MAX其值是71,代表限制名LOGIN_NAME_MAX。sysconf(_SC_LOGIN_NAME_MAX)就是限制名LOGIN_NAME_MAX的实际限制值(256)。
函数返回实际限制值。
实例:x.2.5.1.c
1 #include <unistd.h>
2 #include <stdio.h>
3
4 int main()
5 {
6 printf("_SC_ARG_MAX=%ld; ARG_MAX=%ld\n", _SC_ARG_MAX, sysconf(_SC_ARG_MAX));
7 printf("_SC_OPEN_MAX=%ld; OPEN_MAX=%ld\n", _SC_OPEN_MAX, sysconf(_SC_OPEN_MAX));
8 return 0;
9 }
编译与执行:
[root@localhost unixc]# cc x.2.5.1.c
[root@localhost unixc]# a.out
_SC_ARG_MAX=0; ARG_MAX=2621440
_SC_OPEN_MAX=4; OPEN_MAX=1024
[root@localhost unixc]#
限制名 | name参数 | linux测试值 | 说明 |
ARG_MAX | _SC_ARG_MAX | exec函数的参数最大长度(字节数) | |
ATEXIT_MAX | _SC_ATEXIT_MAX | 可用atexit函数登记的最大函数个数。 | |
CHILD_MAX | _SC_CHILD_MAX | 1024 | 每个实际用户ID的最大进程数。 |
HOST_NAME_MAX | _SC_HOST_NAME_MAX | 主机名最大程度(字节数) | |
LINE_MAX | _SC_LINE_MAX | 实用程序输入行的最大长度(字节数) | |
LOGIN_NAME_MAX | _SC_LOGIN_NAME_MAX | 登录名的最大长度(字节数) | |
OPEN_MAX | _SC_OPEN_MAX | 每个进程的最大打开文件数 | |
PAGESIZE | _SC_PAGESIZE | 系统存储页的长度(字节数) | |