Strumenti Utente

Strumenti Sito


lcs:lcs07:esercitazioni:esercitazione3sc

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
lcs:lcs07:esercitazioni:esercitazione3sc [16/03/2007 alle 08:55 (19 anni fa)] Susanna Pelagattilcs:lcs07:esercitazioni:esercitazione3sc [19/03/2007 alle 08:53 (19 anni fa)] (versione attuale) Susanna Pelagatti
Linea 2: Linea 2:
 Questa esercitazione tratta le //system call// che operano su file. Questa esercitazione tratta le //system call// che operano su file.
  
-L'accesso ai file ed alle directory deve essere effettuato **esclusivamente** utilizzando le system call viste a lezione. La soluzione //deve// includere la gestione degli arrori con una delle tecniche discusse.+**Per gli esercizi 1, 2, 3, 4 DEVE essere prodotto un opportuno makefile con target per la creazione di oggetti ed eseguibili, e per l'esecuzione del test automatico del codice prodotto.** 
 + 
 +L'accesso ai file ed alle directory deve essere effettuato **esclusivamente** utilizzando le system call viste a lezione. La soluzione //deve// includere la gestione degli errori con una delle tecniche discusse.
  
 ====== Esercizio -1: sul debugging ====== ====== Esercizio -1: sul debugging ======
Linea 11: Linea 13:
 ====== Esercizio 0: perror() ====== ====== Esercizio 0: perror() ======
 Usare la perror() per stampare i messaggi di errore relativi a ENOENT, EIO ed EPERM. Usare la perror() per stampare i messaggi di errore relativi a ENOENT, EIO ed EPERM.
- 
  
 ====== Esercizio 1: mycat ====== ====== Esercizio 1: mycat ======
Linea 25: Linea 26:
      Stampa il contenuto di un singolo file su stdout      Stampa il contenuto di un singolo file su stdout
 </code> </code>
 +
 +Utilizzare il comando ''strace'' (man strace) per eseguire ''mycat'' in modo da visualizzare ed intercettare tutte le system call invocate. 
  
 ====== Esercizio 2: mycat (2) ====== ====== Esercizio 2: mycat (2) ======
Linea 43: Linea 46:
 Inoltre si implementi l'opzione ''[-o fileout]'' che permette di specificare un file (''fileout'') di  Inoltre si implementi l'opzione ''[-o fileout]'' che permette di specificare un file (''fileout'') di 
 output diverso dallo standard output. \\ output diverso dallo standard output. \\
-NOTA: L'opzione ''-o'' puo' essere specificata in una posizione arbitraria della lista degli argomenti, per il parsing della linea di comando e' possibile utilizzare la funzione di libreria ''getopt'' (vedi man 3).+//NOTA: L'opzione ''-o'' puo' essere specificata in una posizione arbitraria della lista degli argomenti, per il parsing della linea di comando e' possibile utilizzare la funzione di libreria ''getopt'' (vedi man 3).//
  
 ====== Esercizio 3 : mystat ====== ====== Esercizio 3 : mystat ======
Linea 59: Linea 62:
 stampabile con la funzione di libreria ''ctime()'', in ''time.h'', usare ''getpwid()''  stampabile con la funzione di libreria ''ctime()'', in ''time.h'', usare ''getpwid()'' 
 e ''getgrgid()'' per convertire ''uid'' e ''gid'' nei nomi corrispondenti. e ''getgrgid()'' per convertire ''uid'' e ''gid'' nei nomi corrispondenti.
-\\ 
-//Estensione//: (compilazione separata e make)  
-Suddividere il programma sviluppato su due file :  
-uno contenente un main minimale che chiama una funzione per stampare gli attributi definita nell'altro file. 
-Scrivere il relativo ''makefile''. Usare ''objdump/readelf'' per esplorare le varie 
-parti dei moduli oggetto generati. Cosa contiene l'eseguibile? 
  
-====== Esercizio 4: Test coverage ====== +====== Esercizio 4 : myfnd ====== 
-Utilizzare i tool //gcov// e/o //lcov// per effettuare una valutazione del test coverage dei test che avete effettuato sulla soluzione di uno degli esercizi precedenti. In altre parole, dovete stabilire quanta parte del codice che avete scritto viene effettivamente eseguita e quindi testata.+Realizzare il comando ''myfnd'' 
 +<code> 
 +myfnd dir namef 
 +</code> 
 +che cerca ricorsivamente il file ''namef'' nel sottoalbero radicato nella directory ''dir''. Per ogni file ''namef'' trovato, stampa il path assoluto della directory in cui e' stato trovato e la data dell'ultima modifica. Ad esempio 
 +<code> 
 +bash:~$ myfnd . gigi 
 +/home/susanna/bin/gigi  2007-03-16 14:00 
 +/home/susanna/bin/xxx/gigi  2006-07-10 13:10 
 +bash:~$ 
 +</code> 
 + 
 +====== Esercizio 5: Test coverage ====== 
 +Utilizzare i tool //gcov// e/o //lcov// per effettuare una valutazione del test coverage dei programmi di test che avete sviluppato per la soluzione di uno degli esercizi precedenti. In altre parole, dovete stabilire quanta parte del codice che avete scritto viene effettivamente eseguita e quindi testata.
  
 Chi ha effettuato la consegna del primo frammento di progetto puo' verificare il test coverage di stree-test.c scommentando la quarta linea del //Makefile//: Chi ha effettuato la consegna del primo frammento di progetto puo' verificare il test coverage di stree-test.c scommentando la quarta linea del //Makefile//:
Linea 85: Linea 95:
 </code> </code>
 che rispettivamente, girano //stree// , estraggono le informazioni di coverage e le mostrano relativamente al file //stree.c//. che rispettivamente, girano //stree// , estraggono le informazioni di coverage e le mostrano relativamente al file //stree.c//.
- 
lcs/lcs07/esercitazioni/esercitazione3sc.1174035316.txt.gz · Ultima modifica: 27/06/2007 alle 12:16 (18 anni fa) (modifica esterna)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki