1

我正在尝试使用 setrlimit 来限制程序可以创建的进程数。这是我的代码:

struct rlimit limiter;
getrlimit( RLIMIT_NPROC, &limiter );
limiter.rlim_max = limiter.rlim_cur = 10;
setrlimit( RLIMIT_NPROC, &limiter );

int val = fork();
printf( "Error number %d\n", errno ); //gives 11
if( val == -1 ) {
    printf( "Fork failed\n" );
} else if( val ) {
    printf( "parent\n" );
} else {
    printf("child\n" );
}
return 0;

由于rlim_maxand的rlim_cur值为 10,我的程序应该被允许分叉 10 个进程。但现在,即使是一次分叉调用,它也失败了。虽然如果我将值设置为 250 左右它会起作用。我不明白为什么会这样。我想要一种方法将分叉的数量限制为n.

4

0 回答 0