首页 > 代码库 > 一、进程与信号的资源限制
一、进程与信号的资源限制
进程资源函数
#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,文件错误
一、进程与信号的资源限制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。