进程与信号的资源限制

Posted jmst

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程与信号的资源限制相关的知识,希望对你有一定的参考价值。

进程资源函数

#include <sys/resource.h>
获取用户资源
int getrlimit(int resource,struct rlimit *rlptr);

设置用户资源
int setrlimit(int resource,struct rlimit *rlptr);

内核资源结构体
struct rlimit
{
      rlimit_t rlim_cur;/*soft limit:current limit**/ 软件资源
      rlimit_t rlim_max;/*hard limit;maximum value for rlim_cur**/ 硬件资源     
}
resource 取值
RLIMIT_AS       进程可用存储区大小
RLIMIT_CORE   core文件最大字节
RLIMIT_CPU     CPU时间最大值
RLIMIT_DATA   数据段最大长度
RLIMIT_FSIZE  可创建文件的最大值
RLIMIT_LOCKS 文件锁的最大数
RLIMIT_MEMLOCK 使用mlock能否在存储器中锁定最长字节数
RLIMIT_NOFILE   能打开的最大文件数
RLIMIT_NPROC 每个用户id可拥有的最大进程数
RLIMIT_RSS     最大驻存集的字节长度
RLIMIT_STACK 栈的最大长度

获取系统资源参数

#include <sys/resource.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define RLIMIT(name)        get_limit(#name,name)

void get_limit(char *name,int resource)
{
    struct rlimit limit;
    if(getrlimit(resource,&limit)<0)
    {
        printf("get limit resource error");
        return ;
    }
    printf("%-15s",name);
    if(limit.rlim_cur==RLIM_INFINITY)
    {
        printf(" infinity");
    }
    else
    {
        printf("%10ld",limit.rlim_cur);
    }
    if(limit.rlim_max==RLIM_INFINITY)
    {
        printf(" infinity\n");
    }
    else
    {
        printf("%10ld\n",limit.rlim_max);
    }
    return;
}

int main()
{
    RLIMIT(RLIMIT_AS);
    RLIMIT(RLIMIT_CORE);
    RLIMIT(RLIMIT_CPU);
    RLIMIT(RLIMIT_DATA);
    RLIMIT(RLIMIT_FSIZE);
    RLIMIT(RLIMIT_LOCKS);
    RLIMIT(RLIMIT_MEMLOCK);
    RLIMIT(RLIMIT_NOFILE);
    RLIMIT(RLIMIT_NPROC);
    RLIMIT(RLIMIT_RSS);
    RLIMIT(RLIMIT_STACK);
    return 0;
}

结果

RLIMIT_AS       infinity infinity
RLIMIT_CORE             0 infinity
RLIMIT_CPU      infinity infinity
RLIMIT_DATA     infinity infinity
RLIMIT_FSIZE    infinity infinity
RLIMIT_LOCKS    infinity infinity
RLIMIT_MEMLOCK      65536     65536
RLIMIT_NOFILE        1024     65536
RLIMIT_NPROC         3749      3749
RLIMIT_RSS      infinity infinity
RLIMIT_STACK      8388608 infinity

 linux系统资源限制配置

/etc/security/limits.conf

文件打开数限制
系统已存在,0,文件打开,1,文件输出,2,文件错误

 

 

 

 

以上是关于进程与信号的资源限制的主要内容,如果未能解决你的问题,请参考以下文章

什么是进程的互斥与同步?如何实现进程的互斥和同步

进程间通信之信号量

多进程 — 信号传递与进程控

Linux进程的原理及与信号的联系

信号量与进程/线程间同步与互斥

进程通信之信号量的操作