#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/time.h>
#include <sys/resource.h>
void printf_linux_res(const char* name
, int resource
)
{
struct rlimit limit
;
if(getrlimit(resource
, &limit
) < 0)
{
perror("getrlimit");
}
printf("%s:\n",name
);
if(limit
.rlim_cur
== RLIM_INFINITY
)
{
printf("infinite ");
}else
{
printf("%ld\t", limit
.rlim_cur
);
}
if(limit
.rlim_max
== RLIM_INFINITY
)
{
printf("infinite ");
}else{
printf("%ld\t", limit
.rlim_max
);
}
printf("\n");
}
int main(int argc
, const char* argv
[])
{
int ret
= -1;
printf_linux_res("LIMIT_AS",RLIMIT_AS
);
printf_linux_res("RLIMIT_CORE",RLIMIT_CORE
);
printf_linux_res("RLIMIT_CPU",RLIMIT_CPU
);
printf_linux_res("RLIMIT_DATA",RLIMIT_DATA
);
printf_linux_res("RLIMIT_FSIZE",RLIMIT_FSIZE
);
printf_linux_res("RLIMIT_LOCKS",RLIMIT_LOCKS
);
printf_linux_res("RLIMIT_MEMLOCK",RLIMIT_MEMLOCK
);
printf_linux_res("RLIMIT_NOFILE",RLIMIT_NOFILE
);
printf_linux_res("RLIMIT_NPROC",RLIMIT_NPROC
);
printf_linux_res("RLIMIT_RSS",RLIMIT_RSS
);
printf_linux_res("RLIMIT_STACK",RLIMIT_STACK
);
return 0;
}
RLIMIT_AS:进程可用存储区的最大总长度(字节)。
RLIMIT_CORE:core文件的最大字节数,若取值为
0则阻止创建core文件。
RLIMIT_CPU:CPU时间的最大值(秒),当超过此软限制时,向该进程发送SIGXCPU信号。
RLIMIT_DATA:数据段的最大字节长度。
RLIMIT_FSIZE:可以创建的文件的最大字节长度。当超过此软限制时,则向该进程发送SIGXFSZ信号。
RLIMIT_LOCKS:一个进程可持有的文件锁的最大数。
RLIMIT_MEMLOCK:一个进程使用mlock能够锁定在存储器中的最大字节长度。
RLIMIT_NOFILE:每个进程能打开最大文件数。更改此限制将影响到sysconf函数在参数_SC_OPEN_MAX返回的值。
RLIMIT_NPROC:每个实际用户ID可拥有的最大子进程数。更改此限制将影响到sysconf函数在参数_SC_CHILD_MAX返回的值。
RLIMIT_RSS:最大驻内存集的字节长度。(resident set size in bytes,RSS)
RLIMIT_STACK:栈的最大字节长度。
测试结果