进程资源函数
#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,文件错误
时间: 2024-10-06 15:35:33