linux getrlimit函数,linux 资源限制 sysconf() getrlimit()

每一个系统对资源分配和使用不是随意的,都有限制。如对登录名的最大长度,系统存储页长度,每个实际用户ID的最大进程数等的限制。

可也用以下三个函数来查看这些限制。

long sysconf(int name)  对系统资源限制进行查看

long pathcongf(char *pathname,int name)  对一个文件资源限制进行查看,pathname为一个文件路径

long fpathconf(int fd,int name)          对一个打开的文件的资源限制进行查看,fd为一个文件描述符

具体限制参数(name)请看 APUE P33

#include#include

int main()

{

long max;

max=sysconf(_SC_CHILD_MAX);

printf("HILD_MAX=%ld\n",max);

max=sysconf(_SC_LINE_MAX);

printf("LINE_MAX=%ld\n",max);

return 0;

}

结果:

HILD_MAX=1024

LINE_MAX=2048

#include

#include

int main()

{

long max;

max=pathconf("/etc/passwd",_PC_LINK_MAX);

printf("LINK_MAX=%ld\n",max);

max=pathconf("/etc/passwd",_PC_MAX_CANON);

printf("MAX_CANON=%ld\n",max);

return 0;

}

同样,对于每一个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit查询和更改。

int getrlimit(int resource,struct rlimit *ptr)

int setrlimit(int resource,struct rlimit *prt)

struct rlimit{

rlim_t rlim_cur;  //soft limit

rlim_t rlim_max;  //hard limit

};

资源限制:RLIMIT_NOFILE,这是对每个进程能打开的最大文件数进行限制。

具体还哪些资源限制有那些请看APUE P165

#include #include #include #include #include #include #include int main(void)

{

struct rlimit r;

if(getrlimit(RLIMIT_NOFILE,&r)<0)

{

perror("getrlimit error");

exit(1);

}

printf("RLIMIT_NOFILE cur:%d\n",r.rlim_cur);

printf("RLIMIT_NOFILE max:%d\n",r.rlim_max);

r.rlim_cur=100;

r.rlim_max=200;

if (setrlimit(RLIMIT_NOFILE,&r)<0)

{

fprintf(stderr,"setrlimit error\n");

exit(1);

}

if(getrlimit(RLIMIT_NOFILE,&r)<0)

{

fprintf(stderr,"getrlimit error\n");

exit(1);

}

printf("RLIMIT_NOFILE cur:%d\n",r.rlim_cur);

printf("RLIMIT_NOFILE max:%d\n",r.rlim_max);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值