下面介绍sysconf函数的使用,它允许应用程序在运行时获得系统的限制。
函数的原型为:
1
2
3
4
5
|
#include <unistd.h>
long sysconf(int name);
Returns value of limit specified by name,
or –1
if
limit is indeterminate or an error occurred
|
name参数是在unistd.h头文件中定义的一些_SC_*常量。如果传入的name参数是不合法的,sysconf()函数将返回-1。
示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
[root@lavenliu syslim]# cat my_sysconf.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
static
void
pr_sysconf(
const
char
*msg,
int
name)
{
long
lim;
errno
= 0;
lim = sysconf(name);
if
(lim != -1) {
printf
(
"%s %ld\n"
, msg, lim);
}
else
{
if
(
errno
== 0) {
printf
(
"%s (indeterminate)\n"
, msg);
}
else
{
perror
(
"sysconf error"
);
exit
(1);
}
}
}
int
main(
int
argc,
char
*argv[])
{
pr_sysconf(
"_SC_ARG_MAX: "
, _SC_ARG_MAX);
pr_sysconf(
"_SC_LOGIN_NAME_MAX: "
, _SC_LOGIN_NAME_MAX);
pr_sysconf(
"_SC_OPEN_MAX: "
, _SC_OPEN_MAX);
pr_sysconf(
"_SC_NGROUPS_MAX: "
, _SC_NGROUPS_MAX);
pr_sysconf(
"_SC_PAGESIZE: "
, _SC_PAGESIZE);
pr_sysconf(
"_SC_RTSIG_MAX: "
, _SC_RTSIG_MAX);
return
0;
}
|
编译运行,
1
2
3
4
5
6
7
8
|
gcc -o my_sysconf my_sysconf.c
.
/my_sysconf
_SC_ARG_MAX: 2621440
_SC_LOGIN_NAME_MAX: 256
_SC_OPEN_MAX: 1024
_SC_NGROUPS_MAX: 65536
_SC_PAGESIZE: 4096
_SC_RTSIG_MAX: 32
|
从命令行获取这些限制:
1
2
3
4
5
|
getconf variable-name [ pathname ]
getconf ARG_MAX
2621440
getconf NAME_MAX
/boot
255
|
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任