我正在尝试使用setrlimit来限制程序可以创建的进程数。这是我的代码:
Views
由于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_max
的值为10,因此应该允许我的程序分叉10个进程。但是现在即使是一次拨打电话也没能失败。虽然如果我将值设置为250左右就行了。我不明白为什么会这样。我想要一种方法将分叉数量限制为rlim_cur
。