Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio:esercitazioni:esercitazione2

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:laboratorio:esercitazioni:esercitazione2 [04/03/2010 alle 10:46 (16 anni fa)] Susanna Pelagattiinformatica:sol:laboratorio:esercitazioni:esercitazione2 [10/03/2010 alle 11:35 (16 anni fa)] (versione attuale) Susanna Pelagatti
Linea 11: Linea 11:
 Per fare questo procedere come segue: Per fare questo procedere come segue:
   * leggere le informazioni in ''man 3 mtrace''   * leggere le informazioni in ''man 3 mtrace''
 +  * includere l'header ''mcheck.h''
   * inserire la chiamata alla funzione di libreria mtrace() all'inizio della parte del programma C che vogliamo verificare   * inserire la chiamata alla funzione di libreria mtrace() all'inizio della parte del programma C che vogliamo verificare
-  * inserire la chiamata alla funzione di libreria unmtrace() alla fine della parte del programma C che vogliamo verificare+  * inserire la chiamata alla funzione di libreria muntrace() alla fine della parte del programma C che vogliamo verificare
   * compilare il file da verificare con opzione ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con   * compilare il file da verificare con opzione ''-g'' per includere le informazioni di debugging. Ad esempio se il mio file si chiama ''main.c'' posso compilare con
 <code> <code>
-bash$ gcc -Wall -pedantic -g -o prova main.c+bash$ gcc -Wall -pedantic -g -o prova main.c -lList -L.
 </code> </code>
   * settare la variabile di ambiente ''MALLOC_TRACE'' al path del file in cui vogliamo che la ''mtrace()'' registri le informazioni sugli accessi di memoria. Ad esempio se voglio registrare le informazioni nel file ''./mtrace.out'' devo usare il comando   * settare la variabile di ambiente ''MALLOC_TRACE'' al path del file in cui vogliamo che la ''mtrace()'' registri le informazioni sugli accessi di memoria. Ad esempio se voglio registrare le informazioni nel file ''./mtrace.out'' devo usare il comando
Linea 67: Linea 68:
 Il programma memorizza i dati relativi a ciascun studente in un array di strutture di tipo studente opportunamente definito e li stampa in ordine alfabetico.  Il programma memorizza i dati relativi a ciascun studente in un array di strutture di tipo studente opportunamente definito e li stampa in ordine alfabetico. 
  
 +Suggerimento: Per la lettura da file usare ''fscanf()'' con una opportuna stringa di formattazione oppure fgets() per leggere fino al primo ''\n'' e ''strchr()'' per localizzare i caratteri separatori '':''
  
 ===== Esercizio 4: lettura-scrittura su file passato come argomento ===== ===== Esercizio 4: lettura-scrittura su file passato come argomento =====
Linea 88: Linea 90:
 che ordina gli studenti contenuti nel file ''nome_file'' passato come primo parametro. Fare in modo di stampare un opportuno messaggio di uso se invocato con un numero di parametri diverso da 1. che ordina gli studenti contenuti nel file ''nome_file'' passato come primo parametro. Fare in modo di stampare un opportuno messaggio di uso se invocato con un numero di parametri diverso da 1.
  
-===== Esercizio 5: Manipolare errno e uso di perror() =====+===== Esercizio 5: Manipolare ''errno'' e uso di ''perror()'' =====
  
 In C, la maggiorn parte delle funzioni di libreria che segnalano un errore settano anche la variabile globale ''errno'' con dei codici definiti da diversi standard. I codici sono valori interi, definiti da opportune macro. Per vadere il loro valore eseguire In C, la maggiorn parte delle funzioni di libreria che segnalano un errore settano anche la variabile globale ''errno'' con dei codici definiti da diversi standard. I codici sono valori interi, definiti da opportune macro. Per vadere il loro valore eseguire
Linea 95: Linea 97:
 </code> </code>
 Dopo l'esecuzione di una funzione di libreria che imposta ''errno'' e' possibile chiamare la funzione di libreria ''perror()'' che ispeziona il valore di ''errno'' e trasforma il valore numerico in un messaggio testuale comprensibile all'utente (vedere ''man perror'' per il suo uso).  Dopo l'esecuzione di una funzione di libreria che imposta ''errno'' e' possibile chiamare la funzione di libreria ''perror()'' che ispeziona il valore di ''errno'' e trasforma il valore numerico in un messaggio testuale comprensibile all'utente (vedere ''man perror'' per il suo uso). 
-E' possibile manipolare ''errno'' da programma +E' possibile manipolare ''errno'' da programma includendo l'header ''errno.h'' con 
 +<code c> 
 +#include <errno.h> 
 +</code> 
 + 
 +L'esercizio richiede di essegnare a errno i valori ''EINTR EPERM EBUSY'' e stampare i corrispondenti messaggi di errore usando ''perror()''.
informatica/sol/laboratorio/esercitazioni/esercitazione2.1267699563.txt.gz · Ultima modifica: 04/03/2010 alle 10:46 (16 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki