Salve a tutti,
sto facendo un esercizio per l'universita'e mi trovo in crisi su alcuni punti riguardanti la gestione dei segnali. In seguito ad una serie di fork() tramite l'invio di un segnale devo mettere in pausa per un tempo arbitrario tutti i processi figli attivi al momento per poi farli riprendere il lavoro dove lo avevano sospeso.
Io avevo pensato di fare cosi': in ogni processo figlio gestisco una pause lanciata in seguito alla gestione di un SIGINT tramite CTRL-C;successivamente nella funzione di gestione del segnale di interrupt chiamo la funzione alarm che mi genera un segnale SIGALRM dopo un tempo prefissato (ogni figlio e' generato da una fork seguita da una execl). In teoria alla ricezione di un qualunque segnale, da quello che ho capito, tutti i processi fermati da una pause dovrebbero riprendere l'esecuzione.
Potrebbe quadrare come ragionamento?
Il mio interrogativo ora e'il seguente:
quando lancio un segnale (kill, raise, o quantáltro....) questo segnale verra' ricevuto da tutti i processi, solo dai processi della stessa famiglia o solo dal processo che lo ha generato? Mi chiedevo appunto, nel caso in cui la mia implementazione andasse bene, se si potesse all'interno dei figli gestire l'interrupt per mettere in pausa il processo, mentre allínterno del padre lo stesso segnale di interrupt gestirlo per lanciare l'alarm sperando che questo venga poi ricevuto da tutti i figli in pause.
Dato che sto facendo un po'di confusione nello studiare questi argomenti mi chiedevo se ero sulla strada giusta o stavo gia' sbagliando tutto.
Grazie,
Fabio