我根据输入的分配数量运行一个包含多个分支的程序,我想获得系统在分叉之前允许我创建的进程数,这样我就可以打印并显示错误消息并停止程序,而不是试图直到-1。
有没有办法在C中执行此操作?
答案 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的手册页。