Se non ricordo male fork ritorna:
-1 in errore
0 per il child
> 0 per il parent.
Quindi io farei cosi:
Quote:
bool bParent=false;
for(i=0;i<NUM_PROCESSI;i++)
{
switch(lista[i]=fork())
{
case -1:
perror("Errore nell'esecuzione della fork.");
exit(1);
case 0:
bParent=false;
break;
default:
bParent=true;
lista[i]=getpid();
//printf(" lista [%d] = %d",i,lista[i]);
break;
}
if ( bParent==false)
goto somewhere; // non molto elegante, sbrigativa come esempio
}
for(i=0;i<NUM_PROCESSI;i++) printf(" lista [%d] = %d",i,lista[i]);
|