Ciao a tutti, ho questo pezzettino di codice non capisco una cosa qualcuno mi da
una mano?
void figlio(char *com)
{
int miopid;
miopid=getpid();
signal(SIGUSR1, SIG_DFL);
if ((miopid%2)==0)
signal(SIGUSR1, gestore_att);
else
signal(SIGUSR2, gestore_att);
kill(getppid(), SIGUSR1);
pause();
execlp(com, com,(char *)0);
}
void gestore_att(int sig)
{
printf("%d: sono stato attivato!\n", getpid());
return;
}
questo e' il corpo di un processo figlio....il padre crea tanti processi quanti sono i comandi da eseguire passati a linea di comando.In base al pid del padre si attivano solo i processi dispari o solo quelli pari tramite i relativi segnali SIGUSR1 e SIGUSR2 mandati dal padre..Ora se il padre decide
di mandare con una kill SIGUSR1 fa si che tutti i processi pari si attivano cioe' si risvegliano da "pause" ma i dispari perche' terminano?......questione di time out o cosa?
Non so se mi sono spiegato
Grazie in Anticipo della Risposta