X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=f287e9c6b5e5503247913bca782c22d06c6b3250;hp=ebbc5e2e0920dab23fa340bf4c6350decd677e4d;hb=827c08ae9cc068b139a45cf5e7c8763a654c1da5;hpb=d99b4995b23505a9afde30adf3a716aa7a55f0e9 diff --git a/intro.tex b/intro.tex index ebbc5e2..f287e9c 100644 --- a/intro.tex +++ b/intro.tex @@ -301,3 +301,40 @@ 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} + +La gestione degli errori è in genere una materia complessa. Inoltre il modello +utilizzato dai sistema unix-like è basato sull'architettura a processi, e +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} + +Quasi tutte le funzioni delle librerie del C sono in grado di individuare e +riportare condizioni di errore, ed è una buona norma di programmazione +controllare sempre che le funzioni chiamate si siano concluse correttamente. + +In genere le funzioni di libreria usano un valore speciale per indicare che +c'è stato un errore. Di solito questo valore è -1 o un puntatore nullo o la +costante \macro{EOF} (a seconda della funzione); ma questo valore segnala solo +che c'è stato un errore, non il tipo di errore. + +Per riportare il tipo di errore il sistema usa la variabile globale +\var{errno}\footnote{L'uso di una variabile globale può comportare alcuni + problemi (ad esempio nel caso dei thread) ma lo standard ISO C consente + anche di definire \var{errno} come un \textit{modifible lvalue}, quindi su + può anche usare + +}, 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:signal}), ma +dato che un manipolatore di segnale scritto bene salva e ripristina il valore +della varibile, di questo non è necessario preoccuparsi nella programmazione +normale. + + +