Aggiunto materiale sugli errori
[gapil.git] / intro.tex
index 13a5f4a7eff9bbecf2af8456b202c862f3e886cd..5fac07c41c71d9e72a53e92884f299809daa0e63 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -301,6 +301,9 @@ time viene chiamato \textit{CPU time}.
 \subsection{Tipi di dati primitivi}
 \label{sec:intro_data_types}
 
+
+
+
 \section{La gestione degli errori}
 \label{sec:intro_errors}
 
@@ -310,7 +313,6 @@ presenta una serie di problemi nel caso lo si debba usare con i thread.
 Esamineremo in questa sezione le sue caratteristiche principali.
 
 
-
 \subsection{La variabile \func{errno}}
 \label{sec:intro_errno}
 
@@ -328,22 +330,35 @@ Per riportare il tipo di errore il sistema usa la variabile globale
   problemi (ad esempio nel caso dei thread) ma lo standard ISO C consente
   anche di definire \var{errno} come un \textit{modifiable lvalue}, quindi si
   può anche usare una macro, e questo è infatti il modo usato da Linux per
-  renderla locale ai singoli thread
-}, definita nell'header \file{errno.h}, la variabile è in genere
-definita come \var{volatile} dato che può essere cambiata in modo asincrono da
-un segnale (per una descrizione dei segnali si veda \secref{cha:signals}), ma
-dato che un manipolatore di segnale scritto bene salva e ripristina il valore
-della varibile, di questo non è necessario preoccuparsi nella programmazione
-normale.
+  renderla locale ai singoli thread }, definita nell'header \file{errno.h}, la
+variabile è in genere definita come \var{volatile} dato che può essere
+cambiata in modo asincrono da un segnale (per una descrizione dei segnali si
+veda \secref{cha:signals}), ma dato che un manipolatore di segnale scritto
+bene salva e ripristina il valore della variabile, di questo non è necessario
+preoccuparsi nella programmazione normale.
 
 I valori che può assumere \var{errno} sono riportati in \capref{cha:errors},
 nell'header \file{errno.h} sono anche definiti i nomi simbolici per le
-costanti numeriche che identificano i vari errori. In seguito faremo sempre
-rifermento a tali valori, quando descriveremo i possibili errori restituiti
-dalle funzioni.
+costanti numeriche che identificano i vari errori; essi iniziano tutti per
+\macro{E} e si possono considerare come nomi riservati. In seguito faremo
+sempre rifermento a tali valori, quando descriveremo i possibili errori
+restituiti dalle funzioni.
+
+Il valore di \var{errno} viene sempre settato a zero all'avvio di un
+programma, gran parte delle funzioni di libreria settano \var{errno} ad un
+valore diverso da zero in caso di errore. Si tenga presente che le funzioni
+non cambiano il valore di \var{errno} quando hanno successo, pertanto un
+valore non nullo non è sintomo di errore (potrebbe essere il risultato di un
+errore precedente) e non si può usare \var{errno} per determinare
+\textsl{quando} una chiamata a funzione è fallita.  Pertanto la procedura da
+seguire è quella di controllare \var{errno} immediatamente dopo il fallimento
+della chiamata.
+
 
 \subsection{Le funzioni \func{strerror} e \func{perror}}
 \label{sec:intro_strerror}
 
-
+Benché gli errori siano identificati univocamente dal valore di \var{errno} le
+librerie provvedono alcune funzioni e variabili utili per riportare in
+opportuni messaggi le condizioni di errore verificatesi.