下面介绍sysconf函数的使用,它允许应用程序在运行时获得系统的限制。
函数的原型为:
#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。
示例代码如下:
[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;
}编译运行,
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
从命令行获取这些限制:
getconf variable-name [ pathname ] getconf ARG_MAX 2621440 getconf NAME_MAX /boot 255
本文出自 “固态U盘” 博客,请务必保留此出处http://lavenliu.blog.51cto.com/5060944/1782927
原文地址:http://lavenliu.blog.51cto.com/5060944/1782927