C语言系统资源控制(getrlimit && setrlimit)
2012-05-14 11:43
411 查看
每一个进程都有自己的一组资源限制,在(*)inux系统中我们可以通过
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);
这2个API来取得和设置资源
getrlimit用来取得setrlimit用来设置 这二个参数都需要一个要控制的资源比如控制CPU、内存、文件描述符个数等等的控制,作为第一个参数传入,第二个参数是一个rlimit的结构体地址(指针),他的结构如下定义:
定义放在头文件/usr/include/bits/resource.h中
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
结构体中rlim_cur是要取得或设置的资源软限制的值,rlim_max是硬限制
这两个值的设置有一个小的约束:
1) 任何进程可以将软限制改为小于或等于硬限制
2)任何进程都可以将硬限制降低,但普通用户降低了就无法提高,该值必须等于或大于软限制
3) 只有超级用户可以提高硬限制
一个无限的限制由常量RLIM_INFINITY指定(The value RLIM_INFINITY denotes no limit on a resource )
RLIMIT_AS
The maximum size of the process鈙 virtual
memory (address
space) inbytes. This limit affects callsto brk(2), mmap(2)
and mremap(2), which fail with the error ENOMEM upon exceeding
this limit. Also automatic stack expa
4000
nsion will fail(and gen-
erate a SIGSEGV that kills the process when no alternate stack
has been madeavailable). Since
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);
这2个API来取得和设置资源
getrlimit用来取得setrlimit用来设置 这二个参数都需要一个要控制的资源比如控制CPU、内存、文件描述符个数等等的控制,作为第一个参数传入,第二个参数是一个rlimit的结构体地址(指针),他的结构如下定义:
定义放在头文件/usr/include/bits/resource.h中
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
结构体中rlim_cur是要取得或设置的资源软限制的值,rlim_max是硬限制
这两个值的设置有一个小的约束:
1) 任何进程可以将软限制改为小于或等于硬限制
2)任何进程都可以将硬限制降低,但普通用户降低了就无法提高,该值必须等于或大于软限制
3) 只有超级用户可以提高硬限制
一个无限的限制由常量RLIM_INFINITY指定(The value RLIM_INFINITY denotes no limit on a resource )
RLIMIT_AS
The maximum size of the process鈙 virtual
memory (address
space) inbytes. This limit affects callsto brk(2), mmap(2)
and mremap(2), which fail with the error ENOMEM upon exceeding
this limit. Also automatic stack expa
4000
nsion will fail(and gen-
erate a SIGSEGV that kills the process when no alternate stack
has been madeavailable). Since
相关文章推荐
- C语言系统资源控制(getrlimit && setrlimit)
- C语言系统资源控制(getrlimit && setrlimit)
- C语言系统资源控制(getrlimit && setrlimit)
- [转]C语言系统资源控制(getrlimit && setrlimit)
- C语言系统资源控制(getrlimit && setrlimit)
- C语言系统资源控制(getrlimit && setrlimit)
- Linux系统调用--getrlimit/setrlimit函数详解
- Linux系统调用--getrlimit/setrlimit函数详解
- getrlimit/setrlimit 编程方式的设置系统参数
- getrlimit && setrlimit
- Linux系统调用--getrlimit/setrlimit函数详解
- getrlimit/setrlimit
- Linux系统调用--getrlimit/setrlimit函数详解
- getrlimit setrlimit
- 本机资源状态的获取和设置 (getrlimit,setrlimit,getrusage,getpagesize)
- 1B.2 Gödel语言实现系统研究现状
- lots of "GET variable length limit exceeded"
- 1>CVTRES : fatal error CVT1100: 资源重复。类型: MANIFEST,名称: 1,语言: 0x0409
- Java中资源(resource)获取 Class.getResource() & ClassLoader.getResource()
- Unix & Linux大学教程(四):Unix文件系统、进程和作业控制