questi tre stream sono identificabili attraverso dei nomi simbolici
definiti nell'header \file{stdio.h} che sono:
-\begin{itemize}
-\item \var{FILE *stdin} Lo \textit{standard input} cioè lo stream da
+\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 input} cioè lo stream su
+\item[\var{FILE *stdout}] Lo \textit{standard input} 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 input} cioè lo stream su
+\item[\var{FILE *stderr}] Lo \textit{standard input} 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.
-\end{itemize}
+\end{basedescript}
Nelle \acr{glibc} \var{stdin}, \var{stdout} e \var{stderr} sono
effettivamente tre variabili di tipo \type{FILE *} che possono essere
\begin{table}[htb]
\centering
+ \footnotesize
\begin{tabular}[c]{|l|p{8cm}|}
\hline
\textbf{Valore} & \textbf{Significato}\\
\texttt{a+} & Il file viene aperto (o creato se non esiste) in
\textit{append mode}, l'accesso viene posto in lettura e scrittura. \\
\hline
+ \texttt{b} & specifica che il file è binario, non ha alcun effetto. \\
+ \texttt{x} & la apertura fallisce se il file esiste già. \\
+ \hline
\end{tabular}
\caption{Modalità di apertura di uno stream dello standard ANSI C che
sono sempre presenti in qualunque sistema POSIX}
\begin{table}[htb]
\centering
+ \footnotesize
\begin{tabular}[c]{|l|l|p{10cm}|}
\hline
\textbf{Valore} & \textbf{Tipo} & \textbf{Significato} \\
\begin{table}[htb]
\centering
+ \footnotesize
\begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore} & \textbf{Significato}\\
\begin{table}[htb]
\centering
+ \footnotesize
\begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore} & \textbf{Significato} \\
\end{functions}
\noindent che permettono di ottenere questa informazione.
-Altre due funzioni, \func{\_\_freading} e \func{\_\_fwriting} servono ad un
-uso ancora più specialistico, il loro prototipo è:
+La conoscenza dell'ultima operazione effettuata su uno stream aperto è utile
+in quanto permette di trarre conclusioni sullo stato del buffer e del suo
+contenuto. Altre due funzioni, \func{\_\_freading} e \func{\_\_fwriting}
+servono a tale scopo, il loro prototipo è:
\begin{functions}
\headdecl{stdio\_ext.h}
\funcdecl{int \_\_freading(FILE *stream)}
scrittura o se l'ultima operazione è stata di scrittura.
\end{functions}
-Le due funzioni hanno lo scopo di determinare di che tipo è stata l'ultima
+Le due funzioni permettono di determinare di che tipo è stata l'ultima
operazione eseguita su uno stream aperto in lettura/scrittura; ovviamente se
uno stream è aperto in sola lettura (o sola scrittura) la modalità dell'ultima
operazione è sempre determinata; l'unica ambiguità è quando non sono state
-ancora eseguite operazioni, in questo caso le funzioni rispondono come se
-una operazione ci fosse comunque stata.
-
-La conoscenza dell'ultima operazione effettuata su uno stream aperto in
-lettura/scrittura è utile in quanto permette di trarre conclusioni sullo stato
-del buffer e del suo contenuto.
+ancora eseguite operazioni, in questo caso le funzioni rispondono come se una
+operazione ci fosse comunque stata.
\subsection{Il controllo della bufferizzazione}
\begin{table}[htb]
\centering
+ \footnotesize
\begin{tabular}[c]{|l|l|}
\hline
\textbf{Valore} & \textbf{Modalità} \\