如何获得C中的进程限制

时间:2014-05-03 11:06:16

标签: c linux fork limit process

我根据输入的分配数量运行一个包含多个分支的程序,我想获得系统在分叉之前允许我创建的进程数,这样我就可以打印并显示错误消息并停止程序,而不是试图直到-1。

有没有办法在C中执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用getrlimit获取当前用户的号码处理限制。有关详细信息,请查看man getrlimit

#include <sys/resource.h>

rlim_t max_processes_for_current_user(void) {
   struct rlimit rlp;
   getrlimit(RLIMIT_NPROC, &rlp);
   return rlp.rlim_max;
}

但要知道您是否能够创建新流程,还需要确定当前用户已经运行了多少个流程。在检查限制和当前进程数量之间存在竞争条件,并且您要求新的进程。您也可以遇到全局限制。

答案 1 :(得分:1)

我认为您可以将getrlimit()用于资源类型RLIMIT_NPROC。 有关系统调用的更多信息,您可以查看getrlimit的手册页。