lcs:lcs06:esercitazioni:esercitazione9

Esercizio 0: Gestire SIGINT e SIGTERM

Personalizzare SIGINT e SIGTERM in modo da stampare un breve msg di saluto prima di terminare il programma. Fare in modo che il gestore utilizzi solo funzioni garantite safe e che l'arrivo contemporaneo dei due segnali non interrompa il gestore.

Esercizio 1: killshell

Realizzare una shell rudimentale che legge un comando con eventuali parametri dallo standard input e ne invoca l'esecuzione utilizzando la execvp. La shell deve terminare se viene digitato il comando exit e deve inviare un segnale SIGINT al figlio se l'esecuzione del comando dura piu' di 1 secondo. Ogni volta che un figlio termina, killshell deve stampare un breve messaggio su standard error, indicando il numero del processo terminato, la causa di terminazione (exit o kill) e la causa della terminazione (il segnale ricevuto nel caso della kill oppure lo stato nel caso della exit). Utilizzare la sleep() per settare il timeout di 1 secondo. La sleep viene interrotta dal segnale SIGCHLD ed in caso di interruzione ritorna come valore il numero di secondi rimasti. Usare le macro definite per la waitpid() per testare il tipo di terminazione

lcs/lcs06/esercitazioni/esercitazione9.txt · Ultima modifica: 08/02/2007 alle 13:56 (18 anni fa) da Susanna Pelagatti