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_max
andの値rlim_cur
は 10 であるため、私のプログラムは 10 個のプロセスをフォークできるはずです。しかし、今のところ、単一の fork 呼び出しでも失敗しています。値を約 250 に設定すると機能しますが、その理由がわかりません。フォークの数を に制限する方法が必要ですn
。