2
有人可以向我解釋爲什麼下面的程序創建7185線程而不是7455?getrlimit()返回錯誤的值?
void *thr_crt(void *arg)
{
sleep(64);
return 0;
}
int main(void)
{
struct rlimit lim;
int err;
int i;
pthread_t tid;
if(getrlimit(RLIMIT_NPROC, &lim) < 0)
perror("getrlimit error"), exit(1);
i = 1;
while(pthread_create(&tid, NULL, thr_crt, NULL) == 0)
i++;
printf("soft limit: %d\n", lim.rlim_cur);
printf("hard limit: %d\n", lim.rlim_max);
printf("threads %d\n", i-1);
return 0;
}
輸出:
軟限制:7455
硬性限制:7455個
螺紋7185
它不應該創建線程7455?
只是說明:是不是'rlim_t'類型無符號? –