首页 > 代码库 > 一、进程与信号的资源限制

一、进程与信号的资源限制

进程资源函数

#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 infinityRLIMIT_CORE             0 infinityRLIMIT_CPU      infinity infinityRLIMIT_DATA     infinity infinityRLIMIT_FSIZE    infinity infinityRLIMIT_LOCKS    infinity infinityRLIMIT_MEMLOCK      65536     65536RLIMIT_NOFILE        1024     65536RLIMIT_NPROC         3749      3749RLIMIT_RSS      infinity infinityRLIMIT_STACK      8388608 infinity

 linux系统资源限制配置

/etc/security/limits.conf文件打开数限制系统已存在,0,文件打开,1,文件输出,2,文件错误

 

 

 

 

一、进程与信号的资源限制