进程资源限制

今天Mayuyu将要讲的是Linux进程资源的限制,在操作系统中资源是有限的,一个进程不可能使用无限大的资源。

以我们要对进程进行资源限制。

 

比如:

 

RLIMIT_NOFILE    一个进程能打开的最大文件数,内核默认是1024

RLIMIT_CPU       CPU时间的最大值

RLIMIT_DATA      数据段大小的最大值

RLIMIT_STACK     栈的最大尺寸

RLIMIT_AS        进程总共可用的内存大小的最大值

RLIMIT_FSIZE     创建文件大小的最大值

RLIMIT_CORE      core文件的最大尺寸,如果为0说明不能创建core文件

 

在进程资源限制中,有两个重要的概念,分别是:soft limithard limit

 

 

soft limit指内核所能支持的资源上限,soft limit最大能是unlimited。

hard limit在只是作为soft limit的上限,当设置hard limit后,soft limit只能小于hard limit。

 

rlimt结构体定义为:

struct rlimit
{
    rlim_t rlim_cur;   //soft limit
    rlim_t rlim_max;   //hard limit
};

 

我们可以通过命令:ulimit -a 来查看内存资源限制情况。

 

 

当然,我们也可以设置和取得进程的资源限制。

 

有两种方法:

 

(1)使用shell内建命令

 

(2)使用API,即setrlimit和getrlimit函数。函数原型分别是:

int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);

 

实例:

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>

int main()
{
    struct rlimit limit;
    limit.rlim_cur = RLIM_INFINITY;
    limit.rlim_max = RLIM_INFINITY;
    if(setrlimit(RLIMIT_CORE, &limit))
        printf("set limit failed\n");
    return 0;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值