码迷,mamicode.com
首页 > 其他好文 > 详细

系统限制

时间:2016-05-25 13:30:18      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:linux   limit   函数调用   sysconf   

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

系统限制

标签:linux   limit   函数调用   sysconf   

原文地址:http://lavenliu.blog.51cto.com/5060944/1782927

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!