写一个fork,最多10个进程,超过的时候wait
但是wait好像会把以前已经终止的进程也打印出来的,应该如何优化
int main(void)
{
for(i=1;i<100;i+=1)
{
if(fork_count>=10)
{
wpid = wait(&status);
printf("主 id=[%d]----wpid=[%d] i=[%d] fork_count=[%d] \n",getpid(),wpid,i,fork_count);
fork_count--;
}
fork_count++;
pid=fork();
if( pid==0 )
{
printf("子 id=[%d]----i=[%d] fork_count=[%d]\n",getpid(),i,fork_count);
sleep(2);
exit(0);
}
}
return 0;
}
子 id=[4302]----i=[8] fork_count=[8]
子 id=[4298]----i=[4] fork_count=[4]
子 id=[4304]----i=[10] fork_count=[10]
子 id=[4300]----i=[6] fork_count=[6]
子 id=[4299]----i=[5] fork_count=[5]
子 id=[4301]----i=[7] fork_count=[7]
子 id=[4303]----i=[9] fork_count=[9]
子 id=[4296]----i=[2] fork_count=[2]
子 id=[4295]----i=[1] fork_count=[1]
子 id=[4297]----i=[3] fork_count=[3]
主 id=[4294]----wpid=[4296] i=[11] fork_count=[10]
主 id=[4294]----wpid=[4295] i=[12] fork_count=[10]
子 id=[4305]----i=[11] fork_count=[10]
主 id=[4294]----wpid=[4298] i=[13] fork_count=[10]
子 id=[4306]----i=[12] fork_count=[10]
主 id=[4294]----wpid=[4299] i=[14] fork_count=[10]
子 id=[4307]----i=[13] fork_count=[10]
主 id=[4294]----wpid=[4300] i=[15] fork_count=[10]
子 id=[4308]----i=[14] fork_count=[10]