Sistemi di Calcolo

Corso di Laurea in Ingegneria Informatica e Automatica

Home | Avvisi | Diario Lezioni | Esercitazioni | Esami | Materiale Didattico | Valutazioni Studenti | Lezioni di Camil Demetrescu |

Palestra L9: preparazione per l’esercitazione T9

Esercizio 1 (fork, wait, segnali)

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.

Codice e soluzioni