Grazie,anzitutto,per le risposte.
Sono riuscito con il waitpid ad aspettare che la shell terminasse e riavviarla,c'e' pero' un problema...me le avvia una per volta ,mentre la consegna dice che devono essere avviati tutti contemporaneamente i processi figli.
Per esempio, se scrivo cosi':
codice:
for(i=1; i <= argc; i++)
{
pid = fork();
if ( pid == 0)
{
cmd = argv[i];
strcat(cmd,";read");
execl("/usr/bin/xterm","/usr/bin/xterm","-e",cmd,(char *)0);
}
else{
}
Mi avvia tutti i terminali contemporaneamente.
Se invece aggiungo il waitpid:
codice:
for(i=1; i <= argc; i++)
{
pid = fork();
if ( pid == 0)
{
cmd = argv[i];
strcat(cmd,";read");
execl("/usr/bin/xterm","/usr/bin/xterm","-e",cmd,(char *)0);
}
else{
waitpid(-1,&pid,0);
i--;
}
Me li riavvia se si chiudono ma li esegue uno alla volta.Come faccio ad avviarli tutti assieme pur mantenendo la possibilita' di riavviarli in caso di chiusura?