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

4

0 に答える 0