Risistemazione finale dei controlli ortografici...
[gapil.git] / fileunix.tex
index 397e657b89cb88c24a6029a62683ce056d2cffa3..4e58de093af693e02de04db8240e70b680db127c 100644 (file)
@@ -350,6 +350,9 @@ ritorno il file descriptor con il valore pi
                          alle dimensioni dei blocchi del filesystem; per il
                          kernel 2.6 basta che siano allineati a multipli di 512
                          byte.\\
+    \const{O\_CLOEXEC} & Attiva la modalità di \textit{close-on-exec} (vedi
+                         sez.~\ref{sec:file_sharing} e
+                         \ref{sec:file_fcntl}).\footnotemark\\  
     \hline
   \end{tabular}
   \caption{Valori e significato dei vari bit del \textit{file status flag}.}
@@ -369,7 +372,7 @@ ritorno il file descriptor con il valore pi
 \footnotetext[5]{l'opzione origina da SVr4, dove però causava il ritorno da
   una \func{read} con un valore nullo e non con un errore, questo introduce
   un'ambiguità, dato che come vedremo in sez.~\ref{sec:file_read} il ritorno di
-  zero da parte di \func{read} ha il significato di una end-of-file.}
+  zero da parte di \func{read} ha il significato di una \textit{end-of-file}.}
 
 \footnotetext[6]{l'opzione è stata introdotta dalla SGI in IRIX, e serve
   sostanzialmente a permettere ad alcuni programmi (in genere database) la
@@ -378,6 +381,9 @@ ritorno il file descriptor con il valore pi
   anche in FreeBSD, senza limiti di allineamento dei buffer. In Linux è stata
   introdotta con il kernel 2.4.10, le versioni precedenti la ignorano.}
 
+\footnotetext[7]{introdotto con il kernel 2.6.23, per evitare una \textit{race
+    condition} che si può verificare con i thread, fra l'apertura del file e
+  l'impostazione della suddetta modalità con \func{fcntl}.}
 
 Questa caratteristica permette di prevedere qual è il valore del file
 descriptor che si otterrà al ritorno di \func{open}, e viene talvolta usata da
@@ -393,10 +399,11 @@ sez.~\ref{sec:file_sharing}) ed 
 all'inizio del file.
 
 L'argomento \param{mode} indica i permessi con cui il file viene creato; i
-valori possibili sono gli stessi già visti in sez.~\ref{sec:file_perm_overview}
-e possono essere specificati come OR binario delle costanti descritte in
-tab.~\ref{tab:file_bit_perm}. Questi permessi sono filtrati dal valore di
-\var{umask} (vedi sez.~\ref{sec:file_perm_management}) per il processo.
+valori possibili sono gli stessi già visti in
+sez.~\ref{sec:file_perm_overview} e possono essere specificati come OR binario
+delle costanti descritte in tab.~\ref{tab:file_bit_perm}. Questi permessi sono
+filtrati dal valore di \itindex{umask} \textit{umask} (vedi
+sez.~\ref{sec:file_perm_management}) per il processo.
 
 La funzione prevede diverse opzioni, che vengono specificate usando vari bit
 dell'argomento \param{flags}.  Alcuni di questi bit vanno anche a costituire
@@ -555,9 +562,9 @@ essersi spostata, ma noi scriveremo alla posizione impostata in precedenza
   condition}, vedi sez.~\ref{sec:file_atomic}).
 
 Non tutti i file supportano la capacità di eseguire una \func{lseek}, in
-questo caso la funzione ritorna l'errore \errcode{EPIPE}. Questo, oltre che per
-i tre casi citati nel prototipo, vale anche per tutti quei dispositivi che non
-supportano questa funzione, come ad esempio per i file di
+questo caso la funzione ritorna l'errore \errcode{ESPIPE}. Questo, oltre che
+per i tre casi citati nel prototipo, vale anche per tutti quei dispositivi che
+non supportano questa funzione, come ad esempio per i file di
 terminale.\footnote{altri sistemi, usando \const{SEEK\_SET}, in questo caso
   ritornano il numero di caratteri che vi sono stati scritti.} Lo standard
 POSIX però non specifica niente in proposito. Infine alcuni file speciali, ad
@@ -632,7 +639,7 @@ rieseguire la funzione.  Torneremo in dettaglio sull'argomento in
 sez.~\ref{sec:sig_gen_beha}.  La seconda si verifica quando il file è aperto
 in modalità non bloccante (vedi sez.~\ref{sec:file_noblocking}) e non ci sono
 dati in ingresso: la funzione allora ritorna immediatamente con un errore
-\errcode{EAGAIN}\footnote{BSD usa per questo errore la costante
+\errcode{EAGAIN}\footnote{in BSD si usa per questo errore la costante
   \errcode{EWOULDBLOCK}, in Linux, con le \acr{glibc}, questa è sinonima di
   \errcode{EAGAIN}.} che indica soltanto che non essendoci al momento dati
 disponibili occorre provare a ripetere la lettura in un secondo tempo.
@@ -932,7 +939,7 @@ usare le due funzioni \funcd{fsync} e \funcd{fdatasync}, i cui prototipi sono:
 \begin{functions}
   \headdecl{unistd.h}
   \funcdecl{int fsync(int fd)}
-  Sincronizza dati e metadati del file \param{fd}
+  Sincronizza dati e meta-dati del file \param{fd}
   \funcdecl{int fdatasync(int fd)}
   Sincronizza i dati del file \param{fd}.
   
@@ -947,7 +954,7 @@ usare le due funzioni \funcd{fsync} e \funcd{fdatasync}, i cui prototipi sono:
 
 Entrambe le funzioni forzano la sincronizzazione col disco di tutti i dati del
 file specificato, ed attendono fino alla conclusione delle operazioni;
-\func{fsync} forza anche la sincronizzazione dei metadati del file (che
+\func{fsync} forza anche la sincronizzazione dei meta-dati del file (che
 riguardano sia le modifiche alle tabelle di allocazione dei settori, che gli
 altri dati contenuti \index{inode} nell'inode che si leggono con \func{fstat},
 come i tempi del file).
@@ -1547,6 +1554,9 @@ operazioni che sono predefinite per qualunque file,\footnote{in particolare
   (cioè di tipo \texttt{int *}) su cui sarà restituito il valore.
 \end{basedescript}
 
+% TODO aggiungere FIBMAP e FIEMAP, vedi http://lwn.net/Articles/260832
+
+
 Si noti però come la gran parte di queste operazioni specifiche dei file (per
 essere precisi le prime sei dell'elenco) siano effettuabili in maniera
 generica anche tramite l'uso di \func{fcntl}. Le due funzioni infatti sono