Inserita l'indicizzazione delle funzioni. Ricontrollate le chiamate
[gapil.git] / filestd.tex
index 6348a7daa0978b0a775ee32be414d44d5aea3943..13934c3ef8c8887751059e80306031caa8be86b4 100644 (file)
@@ -228,7 +228,7 @@ prototipi sono:
     viene settata al valore ricevuto dalla funzione sottostante di cui è
     fallita l'esecuzione.
   
     viene settata al valore ricevuto dalla funzione sottostante di cui è
     fallita l'esecuzione.
   
-    Gli errori pertanto possono essere quelli di \func{malloc} per tutte
+    Gli errori pertanto possono essere quelli di \code{malloc} per tutte
     e tre le funzioni, quelli \func{open} per \func{fopen}, quelli di
     \func{fcntl} per \func{fdopen} e quelli di \func{fopen},
     \func{fclose} e \func{fflush} per \func{freopen}.}
     e tre le funzioni, quelli \func{open} per \func{fopen}, quelli di
     \func{fcntl} per \func{fdopen} e quelli di \func{fopen},
     \func{fclose} e \func{fflush} per \func{freopen}.}
@@ -284,7 +284,7 @@ possono essere aperti con le funzioni delle librerie standard del C.
 In realtà lo standard ANSI C prevede un totale di 15 possibili valori
 diversi per \param{mode}, ma in \tabref{tab:file_fopen_mode} si sono
 riportati solo i sei valori effettivi, ad essi può essere aggiunto pure
 In realtà lo standard ANSI C prevede un totale di 15 possibili valori
 diversi per \param{mode}, ma in \tabref{tab:file_fopen_mode} si sono
 riportati solo i sei valori effettivi, ad essi può essere aggiunto pure
-il carattere \func{b} (come ultimo carattere o nel mezzo agli altri per
+il carattere \texttt{b} (come ultimo carattere o nel mezzo agli altri per
 le stringhe di due caratteri) che in altri sistemi operativi serve a
 distinguere i file binari dai file di testo; in un sistema POSIX questa
 distinzione non esiste e il valore viene accettato solo per
 le stringhe di due caratteri) che in altri sistemi operativi serve a
 distinguere i file binari dai file di testo; in un sistema POSIX questa
 distinzione non esiste e il valore viene accettato solo per
@@ -330,7 +330,7 @@ una scrittura una delle funzioni \func{fflush}, \func{fseek}, \func{fsetpos} o
 \func{rewind} prima di eseguire una rilettura; viceversa nel caso in cui si
 voglia fare una scrittura subito dopo aver eseguito una lettura occorre prima
 usare una delle funzioni \func{fseek}, \func{fsetpos} o \func{rewind}. Anche
 \func{rewind} prima di eseguire una rilettura; viceversa nel caso in cui si
 voglia fare una scrittura subito dopo aver eseguito una lettura occorre prima
 usare una delle funzioni \func{fseek}, \func{fsetpos} o \func{rewind}. Anche
-una operazione nominalmente nulla come \func{fseek(file, 0, SEEK\_CUR)} è
+una operazione nominalmente nulla come \code{fseek(file, 0, SEEK\_CUR)} è
 sufficiente a garantire la sincronizzazione.
 
 Una volta aperto lo stream, si può cambiare la modalità di bufferizzazione
 sufficiente a garantire la sincronizzazione.
 
 Una volta aperto lo stream, si può cambiare la modalità di bufferizzazione
@@ -396,7 +396,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 \type{int}) \macro{EOF}\footnote{la costante deve essere
   negativa, le \acr{glibc} usano -1, altre implementazioni possono avere
 maggior parte dei casi questo avviene con la restituzione del valore
 intero (di tipo \type{int}) \macro{EOF}\footnote{la costante deve essere
   negativa, le \acr{glibc} usano -1, altre implementazioni possono avere
-  valori diversi.}  definito anch'esso nell'header \func{stdlib.h}.
+  valori diversi.}  definito anch'esso nell'header \file{stdlib.h}.
 
 Dato che le funzioni dell'interfaccia degli stream sono funzioni di libreria
 che si appoggiano a delle system call, esse non settano direttamente la
 
 Dato che le funzioni dell'interfaccia degli stream sono funzioni di libreria
 che si appoggiano a delle system call, esse non settano direttamente la
@@ -504,7 +504,7 @@ in cui si specifica la dimensione dell'intera struttura ed un solo
 elemento. 
 
 In realtà quello che conta nel trasferimento dei dati sono le dimensioni
 elemento. 
 
 In realtà quello che conta nel trasferimento dei dati sono le dimensioni
-totali, che sono sempre pari al prodotto \func{size * nelem}; la sola
+totali, che sono sempre pari al prodotto \code{size * nelem}; la sola
 differenza è che le funzioni non ritornano il numero di byte scritti,
 ma il numero di elementi.
 
 differenza è che le funzioni non ritornano il numero di byte scritti,
 ma il numero di elementi.
 
@@ -580,7 +580,7 @@ rispettivi prototipi sono:
   \funcdecl{int fgetc(FILE *stream)} Legge un byte da \param{stream} e lo
   restituisce come intero. È una sempre una funzione.
   
   \funcdecl{int fgetc(FILE *stream)} Legge un byte da \param{stream} e lo
   restituisce come intero. È una sempre una funzione.
   
-  \funcdecl{int getchar(void)} Equivalente a \func{getc(stdin)}.
+  \funcdecl{int getchar(void)} Equivalente a \code{getc(stdin)}.
   
   \bodydesc{Tutte queste funzioni leggono un byte alla volta, che viene
     restituito come intero; in caso di errore o fine del file il valore
   
   \bodydesc{Tutte queste funzioni leggono un byte alla volta, che viene
     restituito come intero; in caso di errore o fine del file il valore
@@ -621,7 +621,7 @@ byte restituiscono un carattere in formato esteso (cio
   \funcdecl{wint\_t fgetwc(FILE *stream)} Legge un carattere esteso da
   \param{stream} È una sempre una funzione.
   
   \funcdecl{wint\_t fgetwc(FILE *stream)} Legge un carattere esteso da
   \param{stream} È una sempre una funzione.
   
-  \funcdecl{wint\_t getwchar(void)} Equivalente a \func{getwc(stdin)}.
+  \funcdecl{wint\_t getwchar(void)} Equivalente a \code{getwc(stdin)}.
   
   \bodydesc{Tutte queste funzioni leggono un carattere alla volta, in
     caso di errore o fine del file il valore di ritorno è \macro{WEOF}.}
   
   \bodydesc{Tutte queste funzioni leggono un carattere alla volta, in
     caso di errore o fine del file il valore di ritorno è \macro{WEOF}.}
@@ -639,7 +639,7 @@ precedenti usate per leggere: \func{putc}, \func{fputc} e
   \funcdecl{int fputc(FILE *stream)} Scrive il carattere \param{c} su
   \param{stream}. È una sempre una funzione.
   
   \funcdecl{int fputc(FILE *stream)} Scrive il carattere \param{c} su
   \param{stream}. È una sempre una funzione.
   
-  \funcdecl{int putchar(void)} Equivalente a \func{putc(stdin)}.
+  \funcdecl{int putchar(void)} Equivalente a \code{putc(stdin)}.
   
   \bodydesc{Le funzioni scrivono sempre un carattere alla volta, il cui
     valore viene restituito in caso di successo; in caso di errore o
   
   \bodydesc{Le funzioni scrivono sempre un carattere alla volta, il cui
     valore viene restituito in caso di successo; in caso di errore o
@@ -654,7 +654,7 @@ sempre un intero; in caso di errore o fine del file il valore di ritorno
 
 Come nel caso dell'I/O binario le \acr{glibc} provvedono per ciascuna
 delle funzioni precedenti, come estensione GNU, una seconda funzione, il
 
 Come nel caso dell'I/O binario le \acr{glibc} provvedono per ciascuna
 delle funzioni precedenti, come estensione GNU, una seconda funzione, il
-cui nome è ottenuto aggiungendo un \func{\_unlocked}, che esegue
+cui nome è ottenuto aggiungendo un \code{\_unlocked}, che esegue
 esattamente le stesse operazioni evitando però il lock implicito dello
 stream.
 
 esattamente le stesse operazioni evitando però il lock implicito dello
 stream.
 
@@ -825,7 +825,7 @@ anzich
 Come nel caso dell'I/O binario e a caratteri nelle \acr{glibc} sono
 previste una serie di altre funzioni, estensione di tutte quelle
 illustrate finora (eccetto \func{gets} e \func{puts}), il cui nome si
 Come nel caso dell'I/O binario e a caratteri nelle \acr{glibc} sono
 previste una serie di altre funzioni, estensione di tutte quelle
 illustrate finora (eccetto \func{gets} e \func{puts}), il cui nome si
-ottiene aggiungendo un \func{\_unlocked}, e che eseguono esattamente le
+ottiene aggiungendo un \code{\_unlocked}, e che eseguono esattamente le
 stesse operazioni delle loro equivalenti, evitando però il lock
 implicito dello stream (vedi \secref{sec:file_stream_thread}).
 
 stesse operazioni delle loro equivalenti, evitando però il lock
 implicito dello stream (vedi \secref{sec:file_stream_thread}).
 
@@ -1151,8 +1151,8 @@ pi
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
 estensioni permettono di scrivere con caratteri estesi. Anche queste funzioni,
 Infine una ulteriore estensione GNU definisce le due funzioni \func{dprintf} e
 \func{vdprintf}, che prendono un file descriptor al posto dello stream. Altre
 estensioni permettono di scrivere con caratteri estesi. Anche queste funzioni,
-il cui nome è generato dalle precedenti funzioni aggiungendo una \func{w}
-davanti a \func{print}, sono trattate in dettaglio nella documentazione delle
+il cui nome è generato dalle precedenti funzioni aggiungendo una \texttt{w}
+davanti a \texttt{print}, sono trattate in dettaglio nella documentazione delle
 \acr{glibc}.
 
 In corrispondenza alla famiglia di funzioni \func{printf} che si usano per
 \acr{glibc}.
 
 In corrispondenza alla famiglia di funzioni \func{printf} che si usano per
@@ -1253,7 +1253,7 @@ particolare \param{whence} assume gli stessi valori gi
 \secref{sec:file_lseek}.  La funzione restituisce 0 in caso di successo e -1
 in caso di errore.  La funzione \func{rewind} riporta semplicemente la
 posizione corrente all'inzio dello stream, ma non esattamente equivalente ad
 \secref{sec:file_lseek}.  La funzione restituisce 0 in caso di successo e -1
 in caso di errore.  La funzione \func{rewind} riporta semplicemente la
 posizione corrente all'inzio dello stream, ma non esattamente equivalente ad
-una \func{fseek(stream, 0L, SEEK\_SET)} in quanto vengono cancellati anche i
+una \code{fseek(stream, 0L, SEEK\_SET)} in quanto vengono cancellati anche i
 flag di errore e fine del file.
 
 Per ottenere la posizione corrente si usa invece la funzione \func{ftell}, il
 flag di errore e fine del file.
 
 Per ottenere la posizione corrente si usa invece la funzione \func{ftell}, il
@@ -1278,10 +1278,10 @@ pu
   \headdecl{stdio.h} 
   
   \funcdecl{int fsetpos(FILE *stream, fpos\_t *pos)} Setta la posizione
   \headdecl{stdio.h} 
   
   \funcdecl{int fsetpos(FILE *stream, fpos\_t *pos)} Setta la posizione
-  corrente nello stream \param{stream} al valore specificato da \func{pos}.
+  corrente nello stream \param{stream} al valore specificato da \param{pos}.
   
   \funcdecl{int fgetpos(FILE *stream, fpos\_t *pos)} Scrive la posizione
   
   \funcdecl{int fgetpos(FILE *stream, fpos\_t *pos)} Scrive la posizione
-  corrente nello stream \param{stream} in \func{pos}.
+  corrente nello stream \param{stream} in \param{pos}.
   
   \bodydesc{Le funzioni ritornano 0 in caso di successo e -1 in caso di
     errore.}
   
   \bodydesc{Le funzioni ritornano 0 in caso di successo e -1 in caso di
     errore.}
@@ -1367,8 +1367,8 @@ suo prototipo 
 \begin{prototype}{stdio.h}{int setvbuf(FILE *stream, char *buf, int mode, 
     size\_t size)}
   
 \begin{prototype}{stdio.h}{int setvbuf(FILE *stream, char *buf, int mode, 
     size\_t size)}
   
-  Setta la bufferizzazione dello stream \func{stream} nella modalità indicata
-  da \param{mode}, usando \func{buf} come buffer di lunghezza \param{size}.
+  Setta la bufferizzazione dello stream \param{stream} nella modalità indicata
+  da \param{mode}, usando \param{buf} come buffer di lunghezza \param{size}.
   
   \bodydesc{Restituisce zero in caso di successo, ed un valore qualunque in
     caso di errore.}
   
   \bodydesc{Restituisce zero in caso di successo, ed un valore qualunque in
     caso di errore.}
@@ -1377,7 +1377,7 @@ suo prototipo 
 La funzione permette di controllare tutti gli aspetti della bufferizzazione;
 l'utente può specificare un buffer da usare al posto di quello allocato dal
 sistema passandone alla funzione l'indirizzo in \param{buf} e la dimensione in
 La funzione permette di controllare tutti gli aspetti della bufferizzazione;
 l'utente può specificare un buffer da usare al posto di quello allocato dal
 sistema passandone alla funzione l'indirizzo in \param{buf} e la dimensione in
-\func{size}. 
+\param{size}. 
 
 Ovviamente se si usa un buffer specificato dall'utente questo deve essere
 stato allocato e restare disponibile per tutto il tempo in cui si opera sullo
 
 Ovviamente se si usa un buffer specificato dall'utente questo deve essere
 stato allocato e restare disponibile per tutto il tempo in cui si opera sullo
@@ -1421,11 +1421,11 @@ e \func{setlinebuf}, i loro prototipi sono:
   \headdecl{stdio.h} 
   
   \funcdecl{void setbuf(FILE *stream, char *buf)} Disabilita la
   \headdecl{stdio.h} 
   
   \funcdecl{void setbuf(FILE *stream, char *buf)} Disabilita la
-  bufferizzazione se \param{buf} è \macro{NULL}, altrimenti usa \func{buf}
+  bufferizzazione se \param{buf} è \macro{NULL}, altrimenti usa \param{buf}
   come buffer di dimensione \macro{BUFSIZ} in modalità \textit{fully buffered}.
   
   \funcdecl{void setbuffer(FILE *stream, char *buf, size\_t size)} Disabilita
   come buffer di dimensione \macro{BUFSIZ} in modalità \textit{fully buffered}.
   
   \funcdecl{void setbuffer(FILE *stream, char *buf, size\_t size)} Disabilita
-  la bufferizzazione se \param{buf} è \macro{NULL}, altrimenti usa \func{buf}
+  la bufferizzazione se \param{buf} è \macro{NULL}, altrimenti usa \param{buf}
   come buffer di dimensione \param{size} in modalità \textit{fully buffered}.
   
   \funcdecl{void setlinebuf(FILE *stream)} Pone lo stream in modalità
   come buffer di dimensione \param{size} in modalità \textit{fully buffered}.
   
   \funcdecl{void setlinebuf(FILE *stream)} Pone lo stream in modalità
@@ -1495,7 +1495,7 @@ blocco non sono del tutto indolori, e quando il locking dello stream non 
 necessario (come in tutti i programmi che non usano i thread), tutta la
 procedura può comportare dei pesanti costi in termini di prestazioni. Per
 questo motivo abbiamo visto in come per tutte le funzioni di I/O non
 necessario (come in tutti i programmi che non usano i thread), tutta la
 procedura può comportare dei pesanti costi in termini di prestazioni. Per
 questo motivo abbiamo visto in come per tutte le funzioni di I/O non
-formattato esistano delle versioni \func{\_unlocked} (alcune previste dallo
+formattato esistano delle versioni \code{\_unlocked} (alcune previste dallo
 standard POSIX stesso, altre aggiunte come estenzioni dalle \acr{glibc}) che
 possono essere usate in tutti questi casi\footnote{in certi casi dette
   funzioni possono essere usate, visto che sono molto più efficiente, anche in
 standard POSIX stesso, altre aggiunte come estenzioni dalle \acr{glibc}) che
 possono essere usate in tutti questi casi\footnote{in certi casi dette
   funzioni possono essere usate, visto che sono molto più efficiente, anche in
@@ -1505,7 +1505,7 @@ possono essere usate in tutti questi casi\footnote{in certi casi dette
 pertanto in grado di garantire prestazione enormemente più elevate.
 
 La sostituizione di tutte le funzioni di I/O con le relative versioni
 pertanto in grado di garantire prestazione enormemente più elevate.
 
 La sostituizione di tutte le funzioni di I/O con le relative versioni
-\func{\_unlocked} in un programma che non usa i thread è però un lavoro
+\code{\_unlocked} in un programma che non usa i thread è però un lavoro
 abbastanza noioso, e che appesantisce il codice; per questo motivo le
 \acr{glibc} provvedono un'altra via per poter utilizzare disabilitare il
 locking, anch'essa mutuata da estensioni introdotte in Solaris, cioè l'uso
 abbastanza noioso, e che appesantisce il codice; per questo motivo le
 \acr{glibc} provvedono un'altra via per poter utilizzare disabilitare il
 locking, anch'essa mutuata da estensioni introdotte in Solaris, cioè l'uso
@@ -1528,9 +1528,3 @@ della funzione \func{\_\_fsetlocking}, il cui prototipo 
   di blocco dello stream.
 \end{basedescript}
 
   di blocco dello stream.
 \end{basedescript}
 
-
-\subsection{File temporanei}
-\label{sec:file_temp_file}
-
-Un'altra serie di funzioni definite dalle librerie standard del C sono quelle
-che riguardano la creazione di file temporanei.