Messe fsync, sync.
[gapil.git] / filestd.tex
index 0ea99952c1e5c8d92b012badc22243e5463123ce..e5ea8fdd48b7baf8618a18fc9f4c91fa75dfdd45 100644 (file)
@@ -126,19 +126,19 @@ riguarda l'aspetto della scrittura dei dati sul file.
 
 I caratteri che vengono scritti su uno stream normalmente vengono accumulati
 in un buffer e poi trasmessi in blocco in maniera asincrona rispetto alla
 
 I caratteri che vengono scritti su uno stream normalmente vengono accumulati
 in un buffer e poi trasmessi in blocco in maniera asincrona rispetto alla
-scrittura (quello che viene chiamato il \textit{flush} dei dati) tutte le
-volte che il buffer viene riempito. Un comportamento analogo avviene anche in
-lettura (cioè dal file viene letto un blocco di dati, anche se se ne sono
-richiesti una quantità inferiore), ma la cosa ovviamente ha rilevanza
-inferiore, dato che i dati letti sono sempre gli stessi; in caso di scrittura
-invece, quando si ha un accesso contemporaneo allo stesso file (ad esempio da
-parte di un altro processo) si potranno vedere solo le parti effettivamente
-scritte, e non quelle ancora presenti nel buffer. 
+scrittura (quello che viene chiamato lo \textsl{scarico}, dall'ingelese 
+\textit{flush}, dei dati) tutte le volte che il buffer viene riempito. Un
+comportamento analogo avviene anche in lettura (cioè dal file viene letto un
+blocco di dati, anche se se ne sono richiesti una quantità inferiore), ma la
+cosa ovviamente ha rilevanza inferiore, dato che i dati letti sono sempre gli
+stessi; in caso di scrittura invece, quando si ha un accesso contemporaneo
+allo stesso file (ad esempio da parte di un altro processo) si potranno vedere
+solo le parti effettivamente scritte, e non quelle ancora presenti nel buffer.
 
 Allo stesso modo, se si sta facendo dell'input/output interattivo bisognerà
 
 Allo stesso modo, se si sta facendo dell'input/output interattivo bisognerà
-tenere presente le caratteristiche delle operazioni di \textit{flush} dei
-dati, poiché non è detto che ad una scrittura sullo stream corrisponda una
-immediata scrittura sul dispositivo.
+tenere presente le caratteristiche delle operazioni di scarico dei dati,
+poiché non è detto che ad una scrittura sullo stream corrisponda una immediata
+scrittura sul dispositivo.
 
 Per rispondere ad esigenze diverse, lo standard definisce tre distinte modalità
 in cui può essere eseguita la bufferizzazione, delle quali occorre essere ben
 
 Per rispondere ad esigenze diverse, lo standard definisce tre distinte modalità
 in cui può essere eseguita la bufferizzazione, delle quali occorre essere ben
@@ -177,18 +177,18 @@ chiarimenti e attenzioni per quel che concerne il suo funzionamento. Come gi
 accennato nella descrizione, \emph{di norma} i dati vengono inviati al kernel
 alla ricezione di un carattere di a capo; questo non è vero in tutti i casi,
 infatti, dato che le dimensioni del buffer usato dalle librerie sono fisse, se
 accennato nella descrizione, \emph{di norma} i dati vengono inviati al kernel
 alla ricezione di un carattere di a capo; questo non è vero in tutti i casi,
 infatti, dato che le dimensioni del buffer usato dalle librerie sono fisse, se
-le si eccedono si può avere un \textit{flush} dei dati anche prima che sia
-stato inviato un carattere di \textit{newline}.
+le si eccedono si può avere uno scarico dei dati anche prima che sia stato
+inviato un carattere di \textit{newline}.
 
 Un secondo punto da tenere presente, particolarmente quando si ha a che fare
 con I/O interattivo, è che quando si effettua una lettura su uno stream che
 comporta l'accesso al kernel\footnote{questo vuol dire sempre se lo stream da
 
 Un secondo punto da tenere presente, particolarmente quando si ha a che fare
 con I/O interattivo, è che quando si effettua una lettura su uno stream che
 comporta l'accesso al kernel\footnote{questo vuol dire sempre se lo stream da
-  cui si legge è in modalità \textit{unbuffered}} viene anche eseguito il
-\textit{flush} di tutti i buffer degli stream in scrittura. 
+  cui si legge è in modalità \textit{unbuffered}} viene anche eseguito lo
+scarico di tutti i buffer degli stream in scrittura.
 
 In \secref{sec:file_buffering_ctrl} vedremo come la libreria definisca delle
 
 In \secref{sec:file_buffering_ctrl} vedremo come la libreria definisca delle
-opportune funzioni per controllare le modalità di bufferizzazione ed il
-\textit{flush} dei dati.
+opportune funzioni per controllare le modalità di bufferizzazione e lo scarico
+dei dati.
 
 
 
 
 
 
@@ -308,6 +308,10 @@ usare una delle funzioni \func{fseek}, \func{fsetpos} o \func{rewind}. Anche
 una operazione nominalmente nulla come \func{fseek(file, 0, SEEK\_CUR)} è
 sufficiente a garantire la sincronizzazione.
 
 una operazione nominalmente nulla come \func{fseek(file, 0, SEEK\_CUR)} è
 sufficiente a garantire la sincronizzazione.
 
+Una volta aperto lo stream, si può cambiare la modalità di bufferizzazione
+fintanto che non si è effettuat
+
+
 Uno stream viene chiuso con la funzione \func{fclose} il cui prototipo è:
 \begin{prototype}{stdio.h}{int fclose(FILE * stream)}
   Chiude lo stream \param{stream}. 
 Uno stream viene chiuso con la funzione \func{fclose} il cui prototipo è:
 \begin{prototype}{stdio.h}{int fclose(FILE * stream)}
   Chiude lo stream \param{stream}. 
@@ -318,6 +322,11 @@ Uno stream viene chiuso con la funzione \func{fclose} il cui prototipo 
   funzione che è fallita (\func{close}, \func{write} o \func{fflush}).
 \end{prototype}
 
   funzione che è fallita (\func{close}, \func{write} o \func{fflush}).
 \end{prototype}
 
+La funzione effettua uno scarico di tutti i dati presenti nei buffer di uscita
+e scarta tutti i dati in ingresso, se era stato allocato un buffer per lo
+stream questo verrà rilasciato. La funzione effettua lo scarico solo per i
+dati presenti nei buffer in user space usati dalle \acr{glibc}; se si essere
+sicuri che il kernel forzi la scrittura su disco occorrà effettuare . 
 
 
 \subsection{Lettura e scrittura su uno stream}
 
 
 \subsection{Lettura e scrittura su uno stream}
@@ -363,11 +372,3 @@ stream; se non si 
 \subsection{Efficienza}
 \label{sec:file_stream_efficiency}
 
 \subsection{Efficienza}
 \label{sec:file_stream_efficiency}
 
-
-
-
-
-
-
-
-