Finito di aspettare ... quasi.
[gapil.git] / intro.tex
index 043bf47cc7938aefce50c242ca50782e319f90c6..5dfa21a43eab9e720e39c493e0b0460bf115882a 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -19,7 +19,7 @@ In questa prima sezione faremo una panoramica sulla struttura di un sistema
 \textit{unix-like} come GNU/Linux.  Chi avesse già una conoscenza di questa
 materia può tranquillamente saltare questa sezione.
 
 \textit{unix-like} come GNU/Linux.  Chi avesse già una conoscenza di questa
 materia può tranquillamente saltare questa sezione.
 
-Il concetto base di un sistema unix-like é quello di un nucleo del sistema (il
+Il concetto base di un sistema unix-like è quello di un nucleo del sistema (il
 cosiddetto \textit{kernel}) a cui si demanda la gestione delle risorse
 essenziali (la CPU, la memoria, le periferiche) mentre tutto il resto, quindi
 anche la parte che prevede l'interazione con l'utente, deve venire realizzato
 cosiddetto \textit{kernel}) a cui si demanda la gestione delle risorse
 essenziali (la CPU, la memoria, le periferiche) mentre tutto il resto, quindi
 anche la parte che prevede l'interazione con l'utente, deve venire realizzato
@@ -353,9 +353,9 @@ altre al suo interno che falliscono, modificando cos
 
 Pertanto un valore non nullo di \var{errno} non è sintomo di errore (potrebbe
 essere il risultato di un errore precedente) e non lo si può usare per
 
 Pertanto un valore non nullo di \var{errno} non è sintomo di errore (potrebbe
 essere il risultato di un errore precedente) e non lo si può usare per
-determinare \textsl{quando} una chiamata a funzione è fallita.  La procedura
-da seguire è sempre quella di controllare \var{errno} immediatamente dopo aver
-verificato il fallimento della funzione dal suo codice di ritorno.
+determinare quando o se una chiamata a funzione è fallita.  La procedura da
+seguire è sempre quella di controllare \var{errno} immediatamente dopo aver
+verificato il fallimento della funzione attraverso il suo codice di ritorno.
 
 
 \subsection{Le funzioni \func{strerror} e \func{perror}}
 
 
 \subsection{Le funzioni \func{strerror} e \func{perror}}
@@ -372,24 +372,23 @@ prima funzione che si pu
 \end{prototype}
 
 In generale \func{strerror} viene usata passando \var{errno} come parametro;
 \end{prototype}
 
 In generale \func{strerror} viene usata passando \var{errno} come parametro;
-nel caso si specifichi un codice sbagliato verrà restituita un messaggio di
-errore sconosciuto.
-
-Il problema con \func{strerror} è che la funzione utilizza una stringa statica
-che non deve essere modificata dal programma e che è utilizzabile solo fino ad
-una chiamata successiva a \func{strerror}; nel caso si usino i thread è
+nel caso si specifichi un codice sbagliato verrà restituito un messaggio di
+errore sconosciuto. La funzione utilizza una stringa statica che non deve
+essere modificata dal programma e che è utilizzabile solo fino ad una chiamata
+successiva a \func{strerror}; nel caso si usino i thread è
 provvista\footnote{questa funzione è una estensione GNU, non fa parte dello
   standard POSIX} una versione apposita:
 \begin{prototype}{string.h}
 provvista\footnote{questa funzione è una estensione GNU, non fa parte dello
   standard POSIX} una versione apposita:
 \begin{prototype}{string.h}
-{char * strerror_r(int errnum, char * buff, size\_t size)} 
+{char * strerror\_r(int errnum, char * buff, size\_t size)} 
   La funzione è analoga a \func{strerror} ma ritorna il messaggio in un buffer
   specificato da \var{buff} di lunghezza massima (compreso il terminatore)
   \var{size}.
 \end{prototype}
 che utilizza un buffer che il singolo thread deve allocare, per evitare i
 problemi connessi alla condivisione del buffer statico. Infine, per completare
   La funzione è analoga a \func{strerror} ma ritorna il messaggio in un buffer
   specificato da \var{buff} di lunghezza massima (compreso il terminatore)
   \var{size}.
 \end{prototype}
 che utilizza un buffer che il singolo thread deve allocare, per evitare i
 problemi connessi alla condivisione del buffer statico. Infine, per completare
-la caratterizzazione dell'errore, si può usare anche la variabile globale
-\var{program_invocation_short_name} che riporta il nome del programma
+la caratterizzazione dell'errore, si può usare anche la variabile
+globale\footnote{anche questa è una estensione GNU}
+\var{program\_invocation\_short\_name} che riporta il nome del programma
 attualmente in esecuzione.
 
 Una seconda funzione usata per riportare i codici di errore in maniera
 attualmente in esecuzione.
 
 Una seconda funzione usata per riportare i codici di errore in maniera
@@ -412,11 +411,19 @@ dichiarate in \file{errno.h}:
    int sys_nerr;
 \end{verbatim}
 la prima contiene i puntatori alle stringhe di errore indicizzati da
    int sys_nerr;
 \end{verbatim}
 la prima contiene i puntatori alle stringhe di errore indicizzati da
-\var{errno}; la seconda esprime il valore più alto della lista. 
+\var{errno}; la seconda esprime il valore più alto per un codice di errore,
+l'utilizzo di questa stringa è sostanzialmente equivalente a quello di
+\func{strerror}.
+
 
 
 
 
-Il codice del programma \cmd{errcode} è riportato in \nfig, le sezioni che
-illustrano l'utilizzo delle due funzioni suddette s
+
+In \nfig\ si sono riportate le sezioni attinenti del codice del programma
+\cmd{errcode}, che può essere usato per stampare i messaggi di errore e le
+costanti usate per identificare i singoli errori; il sorgente completo del
+programma è allegato nel file \file{ErrCode.c} e contiene pure la gestione
+delle opzioni e tutte le definizioni necessarie ad associare il valore
+numerico alla costante simbolica. In particolare si è riportata 
 
 \begin{figure}[!htb]
   \footnotesize
 
 \begin{figure}[!htb]
   \footnotesize
@@ -426,5 +433,6 @@ illustrano l'utilizzo delle due funzioni suddette s
 
   \end{lstlisting}
   \caption{Codice per la stampa del messaggio di errore standard.}
 
   \end{lstlisting}
   \caption{Codice per la stampa del messaggio di errore standard.}
-  \label{fig:proc_fork_code}
+  \label{fig:intro_err_mess}
 \end{figure}
 \end{figure}
+