X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filestd.tex;h=c51220daac6bde26ed2437f1e8bb2f3f2740a492;hp=79931fc4a59b10e8ab60bf96df807c89098f30fe;hb=7b5118a8c6ff15e5fcdc1a70a27ead7fcd35830b;hpb=89ab23ea8770a3b4c7a617acf1aae071ce87c8f1 diff --git a/filestd.tex b/filestd.tex index 79931fc..c51220d 100644 --- a/filestd.tex +++ b/filestd.tex @@ -88,19 +88,19 @@ rappresentano i canali standard di input/output prestabiliti; anche 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 @@ -253,6 +253,7 @@ possono essere aperti con le funzioni delle librerie standard del C. \begin{table}[htb] \centering + \footnotesize \begin{tabular}[c]{|l|p{8cm}|} \hline \textbf{Valore} & \textbf{Significato}\\ @@ -275,6 +276,9 @@ possono essere aperti con le funzioni delle librerie standard del C. \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} @@ -961,6 +965,7 @@ degli specificatori di conversione (riportati in \ntab) che la conclude. \begin{table}[htb] \centering + \footnotesize \begin{tabular}[c]{|l|l|p{10cm}|} \hline \textbf{Valore} & \textbf{Tipo} & \textbf{Significato} \\ @@ -1029,6 +1034,7 @@ questo ordine: \begin{table}[htb] \centering + \footnotesize \begin{tabular}[c]{|l|p{10cm}|} \hline \textbf{Valore} & \textbf{Significato}\\ @@ -1051,6 +1057,7 @@ di \func{printf} e nella documentazione delle \acr{glibc}. \begin{table}[htb] \centering + \footnotesize \begin{tabular}[c]{|l|p{10cm}|} \hline \textbf{Valore} & \textbf{Significato} \\ @@ -1342,8 +1349,10 @@ puntatore allo stream; questo pu \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)} @@ -1355,16 +1364,12 @@ uso ancora pi 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} @@ -1423,6 +1428,7 @@ bufferizzata i valori di \param{buf} e \param{size} vengono sempre ignorati. \begin{table}[htb] \centering + \footnotesize \begin{tabular}[c]{|l|l|} \hline \textbf{Valore} & \textbf{Modalità} \\