我心中有一个问题。我只是想知道一个进程使用fork()系统调用创建子进程数的最大限制是什么? 我正在使用UBUNTU OS(12.04)和内核3.2.0-45-generic。
答案 0 :(得分:2)
以编程方式,
#include <stdio.h>
#include <sys/resource.h>
int main()
{
struct rlimit rl;
getrlimit(RLIMIT_NPROC, &rl);
printf("%d\n", rl.rlim_cur);
}
其中struct rlimit是:
struct rlimit {
rlim_t rlim_cur; /* Soft limit */
rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */
};
来自man:
<强> RLIMIT_NPROC 强>
可以为调用进程的真实用户ID创建的最大进程数(或者更准确地说,在Linux上,线程)。遇到此限制时,fork(2)失败并显示错误EAGAIN。
答案 1 :(得分:2)
如果您需要最大进程数量的用户限制,此代码也可以工作:
#include "stdio.h"
#include "unistd.h"
void main()
{
printf("MAX CHILD ID IS :%ld\n",sysconf(_SC_CHILD_MAX));
}
答案 2 :(得分:0)
进程数不是按进程限制,而是按用户限制。
答案 3 :(得分:0)
在Linux上,您可以使用:
ulimit -u
告诉您用户可以运行的最大进程,使用-a
参数将告诉您所有用户限制。
答案 4 :(得分:0)
答案已经存在以获取当前最大值。我想补充一点,您可以通过在/etc/security/limits.conf
sudo vi /etc/security/limits.conf
然后将此行添加到该文件的底部
hard nproc 1000
你可以将它提升到你想要的任何数字 -
nproc
是计算机上可以同时存在的最大进程数。