Linux/UNIX学习之关于进程资源限制的学习

每一个进程都用一组资源限值,它们可以用来限制进程能够消耗的各种系统资源。getrlimit()和setrlimit()系统调用允许一个进程读取和修改自己的资源限制,其函数原型如下:

#include <sys/resource.h>

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

                         Both return 0 on success,or -1 on error. 

参数rlim用来存储限制值,其是一个包含两个字段的结构的指针。此两个字段对应于一种资源的两个关联限制:软限制(rlim_cur)和硬限制(rlim_max)。(rlim_t是一个整数类型)。软限制规定了进程能够消耗的资源数量;对大多数应用程序来说,硬限制的唯一作用就是为软限制设定上限。

struct rlimit{
    rlim_t rlim_cur;
    rlim_t rlim_max;
}

参数resource:其取值如下:

  • RLIMIT_AS

规定了进程的虚拟内存的最大字节数,试图超出这个限制会得到ENOMEM错误提示。

  • RLIMIT_CORE

规定了当进程被特定信号终止时产生的核心dump文件的最大字节数。

  • RLIMIT_CPU

规定了进程最多使用的CPU时间。

  • RLIMIT_DATA

规定了进程的数据段的最大字节数。

  • RLIMIT_FSIZE

规定了进程能够创建的文件的最大字节数。

  • RLIMIT_MEMLOCK

(Linux、BSD系统规定)规定了一个进程最多能够将多少字节的虚拟内存锁进物理内存以防止内存被交换出去。

  • RLIMIT_MSGQUEUE

(自Linux2.6.8起,Linux系统特有)规定了能够为调用进程的真实用户ID的POSIX消息队列分配的最大字节数。

  • RLIMIT_NICE

(Linux系统特有,自Linux2.6.12起)规定了使用sched_setscheduler()和nice()能够为进程设置的最大nice值。

  • RLIMIT_NOFILE

限制规定了一个数值,该数值等于一个进程能够分配的最大文件描述符数量加1.

  • RLIMIT_NPROC

规定调用进程的真实用户ID下最多能够创建的进程数量。(Linux和BSD系统提供此机制)

  • RLIMIT_RSS

规定了进程驻留集中的最大页面数。

  • RLIMIT_RTPRIO

规定使用sched_setscheduler()和sched_setparam()能够为进程设置的最高实时优先级(Linux系统专有)

  • RLIMIT_RTTIME

规定了一个进程在实时调度策略中不睡眠的情况下最大能够消耗的CPU秒数。

  • RLIMIT_SIGPENDING

规定了调用进程的只是用户ID下信号队列中最多能够容纳的信号数量。

  • RLIMIT_STACK

规定了进程栈的最大字节数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值