Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio15:esercitazionia:esercitazione10

Esercitazione 10

Gestione dei segnali con e senza threads. Per gli esercizi proposti si richiede di realizzare un Makefile.

Esercizio 1

Scrivere un programma C che propone a video una serie di tabelline (nella forma n*m=? – con n ed m interi da 0 a 9). Il programma attende per sec secondi che venga data una risposta dall'utente. Se la risposta arriva entro i il timeout, stampa a video se il risultato fornito e' corretto o meno, altrimenti scrive che il risultato non e' arrivato in tempo utile. Il programma prende 2 parametri, il numero di domande che verranno proposte ed il timeout (in secondi). Alla fine vengono stampate a video: la percentuale di risposte esatte ed il numero di volte in cui il timeout è scaduto.

Esercizio 2

Scrivere un programma C che conta il numero di volte in cui l'utente invia il segnale SIGINT (Ctl-C) al processo. Quando il processo riceve il segnale SIGTSTP (Ctl-Z), il numero di SIGINT ricevuti viene stampato sullo standard output. Al terzo segnale SIGTSTP, il processo chiede all'utente se deve terminare o no attendendo una risposta per 10 secondi. Se l'utente non risponde entro 10 secondi un segnale SIGALRM termina il processo.

Esercizio 3

Estendere l'esercizio 3 dell'Assegnamento 8 (M thread produttori ed N thread consumatori) in modo tale che sia gestito il segnale SIGUSR1. In particolare se il processo riceve il segnale SIGUSR1 dovra' essere stampato sullo standard output: la lunghezza corrente della coda e gli elementi attualmente in coda. NOTA: utilizzare un thread come gestore unico del segnale SIGUSR1 utilizzando la chiamata di libreria sigwait.

informatica/sol/laboratorio15/esercitazionia/esercitazione10.txt · Ultima modifica: 17/05/2015 alle 16:59 (9 anni fa) da Massimo Torquati