Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio20:esercitazionib:esercitazione12

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio20:esercitazionib:esercitazione12 [28/04/2020 alle 06:58 (5 anni fa)] – [Esercizio 2] Massimo Torquatiinformatica:sol:laboratorio20:esercitazionib:esercitazione12 [10/05/2020 alle 06:07 (5 anni fa)] (versione attuale) – [Esercizio 2] Massimo Torquati
Linea 7: Linea 7:
 ===== Esercizio 2 ===== ===== Esercizio 2 =====
  
-Modificare l'Esercizio 3 dell'[[informatica:sol:laboratorio20:esercitazionib:esercitazione11|Esercitazione 11]] in modo da gestire la terminazione del server a seguito della ricezione di un segnale di terminazione (SIGINT, SIGQUIT, SIGTERM, SIGHUP) con l'obiettivo di lasciare il sistema in uno stato consistente, cioè eliminare dal file system il socket AF_UNIX creato per accettare le connessioni, eventuali file temporanei e liberare la memoria allocata dinamicamente al fine di poter controllare eventuali memory leaks con ''valgrind''. La gestione dei segnali deve essere effettuata installando un **signal-handler** con la SC ''sigaction''. Il signal-handler deve accedere solamente a variabili dichiarate ''volatile sig_atomic_t'' e deve usare solo chiamate //asynchronous-signal-safe// (vedere anche ''man 7 signal-safety''). \\ +Modificare l'Esercizio 3 dell'[[informatica:sol:laboratorio20:esercitazionib:esercitazione11|Esercitazione 11]] in modo da gestire la terminazione del server a seguito della ricezione di un segnale di terminazione (SIGINT, SIGQUIT, SIGTERM, SIGHUP) con l'obiettivo di lasciare il sistema in uno stato consistente, cioè eliminare dal file system il socket AF_UNIX creato per accettare le connessioni, eventuali file temporanei e liberare la memoria allocata dinamicamente al fine di poter controllare eventuali memory leaks con ''valgrind''. Il segnale SIGPIPE deve essere invece ignorato. La gestione dei segnali deve essere effettuata installando un **signal-handler** con la SC ''sigaction''. Il signal-handler deve accedere solamente a variabili dichiarate ''volatile sig_atomic_t'' e deve usare solo chiamate //asynchronous-signal-safe// (vedere anche ''man 7 signal-safety''). \\ 
-Testare l'esecuzione del server lanciandolo con il comando ''valgrind --leak-check=full'' e verficare che non ci siano messaggi di errore all'uscita dopo aver inviato un segnale di terminazione.+Testare l'esecuzione del server lanciandolo con il comando ''valgrind --leak-check=full'' e verficare che non ci siano messaggi di errore all'uscita dopo aver inviato un segnale di terminazione al termine del test.
  
 ===== Esercizio 3 ===== ===== Esercizio 3 =====
  
-Modificare l'Esercizio 2 in modo da gestire i segnali nel server con un thread dedicato (**non devono essere installati signal-handlers** -- se non per ignorare SIGPIPE). Utilizzare la chiamata di libreria ''sigwait''+Modificare l'Esercizio 2 in modo da gestire i segnali nel server //__in modo sincrono__// utilizzando un thread dedicato (**non devono essere installati signal-handlers** -- se non per ignorare SIGPIPE) la chiamata di libreria ''sigwait''. Fare attenzione a bloccare tutti i segnali che si vogliono gestire in tutti i threads al fine di evitare il delivery "accidentale" ad un thread diverso dal thread gestore dei segnali
  
informatica/sol/laboratorio20/esercitazionib/esercitazione12.1588057095.txt.gz · Ultima modifica: 28/04/2020 alle 06:58 (5 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki