Inizio revisione capitolo 3 e solite indicizzazioni e aggiornamento
[gapil.git] / filestd.tex
index ce45b85454f341672099825d34e7f686544a160f..9d1c6892b9318da5c6782728bf4a4a039b6481cb 100644 (file)
 \label{cha:files_std_interface}
 
 Esamineremo in questo capitolo l'interfaccia standard ANSI C per i file,
-quella che viene comunemente detta interfaccia degli \textit{stream}.  Dopo
-una breve sezione introduttiva tratteremo le funzioni base per la gestione
-dell'input/output, mentre tratteremo le caratteristiche più avanzate
-dell'interfaccia nell'ultima sezione.
+quella che viene comunemente detta interfaccia dei \textit{file stream} o
+anche più brevemente degli \textit{stream}.  Dopo una breve sezione
+introduttiva tratteremo le funzioni base per la gestione dell'input/output,
+mentre tratteremo le caratteristiche più avanzate dell'interfaccia nell'ultima
+sezione.
 
 
 \section{Introduzione}
@@ -24,7 +25,7 @@ dell'interfaccia nell'ultima sezione.
 
 Come visto in cap.~\ref{cha:file_unix_interface} le operazioni di I/O sui file
 sono gestibili a basso livello con l'interfaccia standard unix, che ricorre
-direttamente alle system call messe a disposizione dal kernel.
+direttamente alle \textit{system call} messe a disposizione dal kernel.
 
 Questa interfaccia però non provvede le funzionalità previste dallo standard
 ANSI C, che invece sono realizzate attraverso opportune funzioni di libreria,
@@ -104,20 +105,21 @@ questi tre stream sono identificabili attraverso dei nomi simbolici
 definiti nell'header \file{stdio.h} che sono:
 
 \begin{basedescript}{\desclabelwidth{3.0cm}}
-\item[\var{FILE *stdin}] Lo \textit{standard input} cioè lo stream da
-  cui il processo riceve ordinariamente i dati in ingresso. Normalmente
-  è associato dalla shell all'input del terminale e prende i caratteri
-  dalla tastiera.
-\item[\var{FILE *stdout}] Lo \textit{standard output} cioè lo stream su
-  cui il processo invia ordinariamente i dati in uscita. Normalmente è
-  associato dalla shell all'output del terminale e scrive sullo schermo.
-\item[\var{FILE *stderr}] Lo \textit{standard error} cioè lo stream su
-  cui il processo è supposto inviare i messaggi di errore. Normalmente
-  anch'esso è associato dalla shell all'output del terminale e scrive
-  sullo schermo.
+\item[\var{FILE *stdin}] Lo \textit{standard input} cioè il \textit{file
+    stream} da cui il processo riceve ordinariamente i dati in
+  ingresso. Normalmente è associato dalla shell all'input del terminale e
+  prende i caratteri dalla tastiera.
+\item[\var{FILE *stdout}] Lo \textit{standard output} cioè il \textit{file
+    stream} su cui il processo invia ordinariamente i dati in
+  uscita. Normalmente è associato dalla shell all'output del terminale e
+  scrive sullo schermo.
+\item[\var{FILE *stderr}] Lo \textit{standard error} cioè il \textit{file
+    stream} su cui il processo è supposto inviare i messaggi di
+  errore. Normalmente anch'esso è associato dalla shell all'output del
+  terminale e scrive sullo schermo.
 \end{basedescript}
 
-Nelle \acr{glibc} \var{stdin}, \var{stdout} e \var{stderr} sono effettivamente
+Nella \acr{glibc} \var{stdin}, \var{stdout} e \var{stderr} sono effettivamente
 tre variabili di tipo \type{FILE}\texttt{ *} che possono essere usate come
 tutte le altre, ad esempio si può effettuare una redirezione dell'output di un
 programma con il semplice codice: \includecodesnip{listati/redir_stdout.c} ma
@@ -385,7 +387,7 @@ e scarta quelli in ingresso, chiudendo tutti i file. Questa funzione è
 provvista solo per i casi di emergenza, quando si è verificato un errore
 ed il programma deve essere abortito, ma si vuole compiere qualche altra
 operazione dopo aver chiuso i file e prima di uscire (si ricordi quanto
-visto in sez.~\ref{sec:proc_exit}).
+visto in sez.~\ref{sec:proc_conclusion}).
 
 
 \subsection{Lettura e scrittura su uno stream}
@@ -1418,11 +1420,11 @@ Ovviamente se si usa un buffer specificato dall'utente questo deve essere
 stato allocato e rimanere disponibile per tutto il tempo in cui si opera sullo
 stream. In genere conviene allocarlo con \func{malloc} e disallocarlo dopo la
 chiusura del file; ma fintanto che il file è usato all'interno di una
-funzione, può anche essere usata una variabile automatica. In \file{stdio.h} è
-definita la macro \const{BUFSIZ}, che indica le dimensioni generiche del
-buffer di uno stream; queste vengono usate dalla funzione \func{setbuf}.  Non
-è detto però che tale dimensione corrisponda sempre al valore ottimale (che
-può variare a seconda del dispositivo).
+funzione, può anche essere usata una \index{variabili!automatiche} variabile
+automatica. In \file{stdio.h} è definita la macro \const{BUFSIZ}, che indica
+le dimensioni generiche del buffer di uno stream; queste vengono usate dalla
+funzione \func{setbuf}.  Non è detto però che tale dimensione corrisponda
+sempre al valore ottimale (che può variare a seconda del dispositivo).
 
 Dato che la procedura di allocazione manuale è macchinosa, comporta dei rischi
 (come delle scritture accidentali sul buffer) e non assicura la scelta delle