X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filestd.tex;h=214fb2046721292044a5c27302ae77e3be99399d;hp=bfad103d639271ae970863e8c9af64f25262b5ed;hb=ffb12837c5ed8ccc095bc9c88349cd19b5e6b472;hpb=a896c0a874a06d086369f5cc3c7e6cf347671835 diff --git a/filestd.tex b/filestd.tex index bfad103..214fb20 100644 --- a/filestd.tex +++ b/filestd.tex @@ -92,7 +92,7 @@ usare sempre puntatori del tipo \texttt{FILE *} ottenuti dalla libreria stessa (tanto che in certi casi il termine di puntatore a file è diventato sinonimo di \textit{stream}). Tutte le funzioni della libreria che operano sui file accettano come argomenti solo variabili di questo tipo, che diventa -accessibile includendo l'header file \file{stdio.h}. +accessibile includendo l'header file \headfile{stdio.h}. \subsection{Gli \textit{stream standard}} @@ -102,7 +102,7 @@ Ai tre file descriptor standard (vedi sez.~\ref{sec:file_std_descr}) aperti per ogni processo, corrispondono altrettanti \textit{stream}, che rappresentano i canali standard di input/output prestabiliti; anche questi tre \textit{stream} sono identificabili attraverso dei nomi simbolici definiti -nell'header \file{stdio.h} che sono: +nell'header \headfile{stdio.h} che sono: \begin{basedescript}{\desclabelwidth{3.0cm}} \item[\var{FILE *stdin}] Lo \textit{standard input} cioè il \textit{file @@ -422,7 +422,7 @@ notificato come tale dai valori di uscita delle varie funzioni. Nella maggior parte dei casi questo avviene con la restituzione del valore intero (di tipo \ctyp{int}) \val{EOF}\footnote{la costante deve essere negativa, le \acr{glibc} usano -1, altre implementazioni possono avere - valori diversi.} definito anch'esso nell'header \file{stdlib.h}. + valori diversi.} definito anch'esso nell'header \headfile{stdlib.h}. Dato che le funzioni dell'interfaccia degli \textit{stream} sono funzioni di libreria che si appoggiano a delle system call, esse non impostano @@ -854,9 +854,10 @@ che eccede le dimensioni del buffer. Per questo motivo le \acr{glibc} prevedono, come estensione GNU, due nuove funzioni per la gestione dell'input/output di linea, il cui uso permette di risolvere questi problemi. L'uso di queste funzioni deve essere attivato -definendo la macro \macro{\_GNU\_SOURCE} prima di includere \file{stdio.h}. La -prima delle due, \funcd{getline}, serve per leggere una linea terminata da un -newline, esattamente allo stesso modo di \func{fgets}, il suo prototipo è: +definendo la macro \macro{\_GNU\_SOURCE} prima di includere +\headfile{stdio.h}. La prima delle due, \funcd{getline}, serve per leggere una +linea terminata da un newline, esattamente allo stesso modo di \func{fgets}, +il suo prototipo è: \begin{prototype}{stdio.h} {ssize\_t getline(char **buffer, size\_t *n, FILE *stream)} Legge una linea dal file \param{stream} copiandola sul buffer indicato da \param{buffer} @@ -1433,11 +1434,11 @@ stato allocato e rimanere disponibile per tutto il tempo in cui si opera sullo \textit{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 \index{variabili!automatiche} variabile -automatica. In \file{stdio.h} è definita la macro \const{BUFSIZ}, che indica -le dimensioni generiche del buffer di uno \textit{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). +automatica. In \headfile{stdio.h} è definita la macro \const{BUFSIZ}, che +indica le dimensioni generiche del buffer di uno \textit{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