Si vuole scrivere un programma che crea n
figli tale che il figlio i
-esimo dorme i
secondi, con i=1,...,n
e termina con successo.
Per ogni figlio creato, il programma deve stampare "- creato figlio <pid>"
, dove pid
è il pid del processo generato. Dopo aver creato i figli, il genitore rimane in attesa perenne. La terminazione dei figli è catturata tramite il segnale SIGCHLD
. Il gestore del segnale (che gira nel processo genitore) fa una wait
; quando l’ultimo processo termina, il gestore del segnale manda in segnale SIGTERM
a se stesso per terminare anche il genitore. Per ogni figlio terminato, il gestore del segnale stampa "* terminato figlio <pid>"
, dove pid
è il pid del processo terminato.
La funzione deve essere incapsulata nel file E1-child-signal/e1.c
in void do_work(int n)
che prende come parametro il numero n
di processi da creare.