进程与信号的资源限制
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,文件错误
以上是关于进程与信号的资源限制的主要内容,如果未能解决你的问题,请参考以下文章