Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio11:esercitazioni:esercitazione10

Differenze

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

Link a questa pagina di confronto

Prossima revisione
Revisione precedente
informatica:sol:laboratorio11:esercitazioni:esercitazione10 [24/05/2011 alle 12:21 (14 anni fa)] – creata Susanna Pelagattiinformatica:sol:laboratorio11:esercitazioni:esercitazione10 [16/09/2011 alle 11:39 (14 anni fa)] (versione attuale) – [Esercizio 2: alarmserver] giovannni
Linea 8: Linea 8:
 ====== Esercizio 1: killshell ====== ====== 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).+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 SIGKILL 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 ''alarm()'' per settare il timeout di 1 secondo. La alarm viene interrotta dal segnale SIGCHLD. Usare le macro definite per la ''waitpid()'' per testare il tipo di terminazione  Utilizzare la ''alarm()'' per settare il timeout di 1 secondo. La alarm viene interrotta dal segnale SIGCHLD. Usare le macro definite per la ''waitpid()'' per testare il tipo di terminazione 
Linea 23: Linea 23:
  
 Realizzare il client e testare alarmserver. Realizzare il client e testare alarmserver.
 +
 +Nota: Utilizzare la SC alarm() per impostare la sveglia sul server; considerare che, in un dato istante, un solo allarme puo` essere schedulato   per processo e che, nel caso di processi multi-threaded, il conseguente segnale SIGALRM viene inviato al processo e non ad uno specifico thread 
informatica/sol/laboratorio11/esercitazioni/esercitazione10.1306239661.txt.gz · Ultima modifica: 24/05/2011 alle 12:21 (14 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki