资源限制与线程编程全解析
1. 资源限制的设置与获取
在了解了各种资源限制后,下面来看看如何获取和设置这些限制。获取资源限制相对简单,以下是获取核心文件大小限制的示例代码:
struct rlimit rlim;
int ret;
/* get the limit on core sizes */
ret = getrlimit (RLIMIT_CORE, &rlim);
if (ret == -1) {
perror ("getrlimit");
return 1;
}
printf ("RLIMIT_CORE limits: soft=%ld hard=%ld\n",
rlim.rlim_cur, rlim.rlim_max);
将此代码片段集成到一个更大的程序中并运行,会得到如下输出:
RLIMIT_CORE limits: soft=0 hard=-1
这里软限制为 0,硬限制为无穷大(-1 表示 RLIM_INFINITY
)。因此,可以设置任意大小的新软限制。以下示例将最大核心文件大小设置为 32MB:
struct rlimit rlim;
int ret;
rlim.rlim_cur = 32 * 1024 * 1024; /* 32 MB */
rlim.rlim_max = RLIM_INFINITY; /* leave