Correzioni per le footnote e scritta altra roba sui segnali (finite kill e
[gapil.git] / fileunix.tex
index e99db64..cacce23 100644 (file)
@@ -1,4 +1,4 @@
-\chapter{I file: l'interfaccia standard unix}
+\chapter{I file: l'interfaccia standard Unix}
 \label{cha:file_unix_interface}
 
 Esamineremo in questo capitolo la prima delle due interfacce di programmazione
@@ -68,7 +68,7 @@ file, fra cui:
   campo \var{f\_pos}).
 \item un puntatore all'inode\footnote{nel kernel 2.4.x si è in realtà passati
     ad un puntatore ad una struttura \var{dentry} che punta a sua volta
-    all'inode passando per la nuova struttura del VFS} del file.
+    all'inode passando per la nuova struttura del VFS.} del file.
 %\item un puntatore alla tabella delle funzioni \footnote{la struttura
 %    \var{f\_op} descritta in \secref{sec:file_vfs_work}} che si possono usare
 %  sul file.
@@ -153,7 +153,7 @@ restano i limiti imposti dall'amministratore (vedi \secref{sec:sys_limits}).
 \section{Le funzioni base}
 \label{sec:file_base_func}
 
-L'interfaccia standard unix per l'input/output sui file è basata su cinque
+L'interfaccia standard Unix per l'input/output sui file è basata su cinque
 funzioni fondamentali: \func{open}, \func{read}, \func{write}, \func{lseek} e
 \func{close}, usate rispettivamente per aprire, leggere, scrivere, spostarsi e
 chiudere un file. 
@@ -245,7 +245,7 @@ sempre il file descriptor con il valore pi
     zero. Se il file è un terminale o una fifo il flag verrà ignorato, negli
     altri casi il comportamento non è specificato. \\
     \macro{O\_NOFOLLOW} & se \var{pathname} è un link simbolico la chiamata
-    fallisce. Questa è unestensione BSD aggiunta in Linux dal kernel 2.1.126.
+    fallisce. Questa è un'estensione BSD aggiunta in Linux dal kernel 2.1.126.
     Nelle versioni precedenti i link simbolici sono sempre seguiti, e questa
     opzione è ignorata. \\
     \macro{O\_DIRECTORY} & se \var{pathname} non è una directory la chiamata
@@ -303,7 +303,7 @@ sempre 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
-  unambiguità, dato che come vedremo in \secref{sec:file_read} il ritorno di
+  un'ambiguità, dato che come vedremo in \secref{sec:file_read} il ritorno di
   zero da parte di \func{read} ha il significato di una end-of-file.}
 
 Questa caratteristica permette di prevedere qual'è il valore del file
@@ -450,7 +450,7 @@ La nuova posizione 
 sommato al riferimento dato da \param{whence}; quest'ultimo può assumere i
 seguenti valori\footnote{per compatibilità con alcune vecchie notazioni
   questi valori possono essere rimpiazzati rispettivamente con 0, 1 e 2 o con
-  \macro{L\_SET}, \macro{L\_INCR} e \macro{L\_XTND}}:
+  \macro{L\_SET}, \macro{L\_INCR} e \macro{L\_XTND}.}:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
 \item[\macro{SEEK\_SET}] si fa riferimento all'inizio del file: il valore di
   \var{offset} è la nuova posizione.
@@ -480,9 +480,9 @@ essersi spostata, ma noi scriveremo alla posizione settata in precedenza.
 Non tutti i file supportano la capacità di eseguire una \func{lseek}, in
 questo caso la funzione ritorna l'errore \macro{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 le \acr{tty}\footnote{altri
+supportano questa funzione, come ad esempio per le \acr{tty}.\footnote{altri
   sistemi, usando \macro{SEEK\_SET}, in questo caso ritornano il numero di
-  caratteri che vi sono stati scritti}. Lo standard POSIX però non specifica
+  caratteri che vi sono stati scritti.} Lo standard POSIX però non specifica
 niente al proposito. Infine alcuni device, ad esempio \file{/dev/null}, non
 causano un errore ma restituiscono un valore indefinito.
 
@@ -563,7 +563,7 @@ Nella seconda versione delle \textit{Single Unix
   Specification}\footnote{questa funzione, e l'analoga \func{pwrite} sono
   state aggiunte nel kernel 2.1.60, il supporto nelle \acr{glibc}, compresa
   l'emulazione per i vecchi kernel che non hanno la system call, è stato
-  aggiunto con la versione 2.1} (quello che viene chiamato normalmente Unix98,
+  aggiunto con la versione 2.1.} (quello che viene chiamato normalmente Unix98,
 vedi \secref{sec:intro_opengroup}) è stata introdotta la definizione di
 un'altra funzione di lettura, \func{pread}, che diventa accessibile con la
 definizione:
@@ -636,7 +636,7 @@ i file ordinari il numero di byte scritti 
 da \var{count}, a meno di un errore. Negli altri casi si ha lo stesso
 comportamento di \func{read}.
 
-Anche per \func{write} lo standard Unix98 definisce unanaloga \func{pwrite}
+Anche per \func{write} lo standard Unix98 definisce un'analoga \func{pwrite}
 per scrivere alla posizione indicata senza modificare la posizione corrente
 nel file, il suo prototipo è:
 \begin{prototype}{unistd.h}
@@ -731,7 +731,7 @@ corrente nel file varier
 Si noti inoltre che anche i flag di stato del file (quelli settati
 dall'argomento \param{flag} di \func{open}) essendo tenuti nella voce della
 \textit{file table}\footnote{per la precisione nel campo \var{f\_flags} di
-  \var{file}}, vengono in questo caso condivisi. Ai file però sono associati
+  \var{file}.}, vengono in questo caso condivisi. Ai file però sono associati
 anche altri flag, dei quali l'unico usato al momento è \macro{FD\_CLOEXEC},
 detti \textit{file descriptor flags}. Questi ultimi sono tenuti invece in
 \var{file\_struct}, e perciò sono specifici di ciascun processo e non vengono
@@ -765,14 +765,13 @@ file sar
 corrente settata con la \func{lseek} che non corrisponde più alla fine del
 file, e la successiva \func{write} sovrascriverà i dati del secondo processo.
 
-Il problema è che usare due system call in successione non è unoperazione
+Il problema è che usare due system call in successione non è un'operazione
 atomica; il problema è stato risolto introducendo la modalità
 \macro{O\_APPEND}. In questo caso infatti, come abbiamo descritto in
 precedenza, è il kernel che aggiorna automaticamente la posizione alla fine
 del file prima di effettuare la scrittura, e poi estende il file. Tutto questo
 avviene all'interno di una singola system call (la \func{write}) che non
-essendo interrompibile da un altro processo costituisce una operazione
-atomica.
+essendo interrompibile da un altro processo costituisce un'operazione atomica.
 
 Un altro caso tipico in cui è necessaria l'atomicità è quello in cui si vuole
 creare un file di lock, bloccandosi se il file esiste. In questo caso la
@@ -798,10 +797,10 @@ secondo tempo rispetto al momento della esecuzione della \func{write}.
 
 Per questo motivo, quando è necessaria una sincronizzazione dei dati, il
 sistema mette a disposizione delle funzioni che provvedono a forzare lo
-scarico dei dati dai buffer del kernel\footnote{come già accennato neanche
+scarico dei dati dai buffer del kernel.\footnote{come già accennato neanche
   questo da la garanzia assoluta che i dati siano integri dopo la chiamata,
   l'hardware dei dischi è in genere dotato di un suo meccanismo interno che
-  può ritardare ulteriormente la scrittura effettiva.}. La prima di queste
+  può ritardare ulteriormente la scrittura effettiva.} La prima di queste
 funzioni è \func{sync} il cui prototipo è:
 \begin{prototype}{unistd.h}{int sync(void)}
   
@@ -847,10 +846,10 @@ di \var{fstat} come i tempi del file).
 
 Si tenga presente che questo non comporta la sincronizzazione della
 directory che contiene il file (e scrittura della relativa voce su
-disco) che deve essere effettuata esplicitamente\footnote{in realtà per
+disco) che deve essere effettuata esplicitamente.\footnote{in realtà per
   il filesystem \acr{ext2}, quando lo si monta con l'opzione \cmd{sync},
   il kernel provvede anche alla sincronizzazione automatica delle voci
-  delle directory.}.
+  delle directory.}
 
 
 \subsection{La funzioni \func{dup} e \func{dup2}}
@@ -1026,7 +1025,7 @@ avanti quando affronteremo le problematiche ad esse relative.
 Per determinare le modalità di accesso inoltre è necessario estrarre i bit di
 accesso (ottenuti con il comando \macro{F\_GETFL}); infatti la definizione
 corrente non assegna bit separati a \macro{O\_RDONLY}, \macro{O\_WRONLY} e
-\macro{O\_RDWR}\footnote{posti rispettivamente ai valori 0, 1 e 2}, per cui il
+\macro{O\_RDWR},\footnote{posti rispettivamente ai valori 0, 1 e 2.} per cui il
 valore si ottiene eseguendo un AND binario del valore di ritorno di
 \func{fcntl} con la maschera \macro{O\_ACCMODE} anch'essa definita in
 \file{fcntl.h}.