下面介绍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