Aggiunto materiale sugli errori
[gapil.git] / intro.tex
index aa39c3db42b7fdffcbc05b2a2e51bd0dd89c216f..5fac07c41c71d9e72a53e92884f299809daa0e63 100644 (file)
--- a/intro.tex
+++ b/intro.tex
@@ -201,17 +201,17 @@ esecuzione un programma di interfaccia (che pu
 terminale o una interfaccia grafica) che mette a disposizione dell'utente un
 meccanismo con cui questo può impartire comandi o eseguire altri programmi.
 
-Ogni utente appartiene anche ad almeno un gruppo (\textit{group}), ma può
-essere associato a più gruppi, questo permette di gestire i permessi di
+Ogni utente appartiene anche ad almeno un gruppo (il cosiddetto
+\textit{default group}), ma può essere associato ad altri gruppi (i
+\textit{supplementary group}), questo permette di gestire i permessi di
 accesso ai file e quindi anche alle periferiche, in maniera più flessibile,
 definendo gruppi di lavoro, di accesso a determinate risorse, etc.
 
 L'utente e il gruppo sono identificati da due numeri (la cui corrispondenza ad
-un nome in espresso in caratteri \`e inserita nei due files
-\texttt{/etc/passwd} e \texttt{/etc/groups}). Questi numeri sono
-l'\textit{user identifier}, detto in breve \textit{uid} e il \textit{group
-  identifier}, detto in breve \textit{gid} che sono quelli che identificano
-l'utente di fronte al sistema.
+un nome in espresso in caratteri è inserita nei due files \file{/etc/passwd}
+e \file{/etc/groups}). Questi numeri sono l'\textit{user identifier}, detto
+in breve \acr{uid} e il \textit{group identifier}, detto in breve \acr{gid}
+che sono quelli che identificano l'utente di fronte al sistema.
  
 In questo modo il sistema è in grado di tenere traccia per ogni processo
 dell'utente a cui appartiene ed impedire ad altri utenti di interferire con
@@ -220,10 +220,10 @@ sicurezza interna in quanto anche l'accesso ai file (vedi
 \secref{sec:file_access_control}) è regolato da questo meccanismo di
 identificazione.
 
-Un utente speciale del sistema è \textit{root}, il cui uid è zero. Esso
+Un utente speciale del sistema è \textit{root}, il cui \acr{uid} è zero. Esso
 identifica l'amministratore del sistema, che deve essere in grado di fare
-qualunque operazione; pertanto per l'utente root i meccanismi di controllo
-descritti in precedenza sono disattivati.
+qualunque operazione; pertanto per l'utente \textit{root} i meccanismi di
+controllo descritti in precedenza sono disattivati.
 
 
 \section{Gli standard di unix e GNU/Linux}
@@ -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.