Aggiunta figura sullo schema del kernel per il file locking
[gapil.git] / fileunix.tex
index 4ea7eb9895ea8e7787cb56cfe4a251fccf8d60ff..bd3ed091fa27e1b6f9a2b66de914992db8be7985 100644 (file)
@@ -138,10 +138,11 @@ posto di questi valori numerici:
   \label{tab:file_std_files}
 \end{table}
 
   \label{tab:file_std_files}
 \end{table}
 
-In \curfig\ si è utilizzata questa situazione come esempio, facendo
-riferimento ad un programma in cui lo \textit{standard input} è associato ad
-un file mentre lo \textit{standard output} e lo \textit{standard error} sono
-entrambi associati ad un altro file (e quindi utilizzano lo stesso inode).
+In \figref{tab:file_std_files} si è utilizzata questa situazione come esempio,
+facendo riferimento ad un programma in cui lo \textit{standard input} è
+associato ad un file mentre lo \textit{standard output} e lo \textit{standard
+  error} sono entrambi associati ad un altro file (e quindi utilizzano lo
+stesso inode).
 
 Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il
 numero di file aperti era anche soggetto ad un limite massimo dato dalle
 
 Nelle vecchie versioni di Unix (ed anche in Linux fino al kernel 2.0.x) il
 numero di file aperti era anche soggetto ad un limite massimo dato dalle
@@ -183,8 +184,8 @@ prototipo 
   specificati da \var{mode}.
   
   \bodydesc{La funzione ritorna il file descriptor in caso di successo e -1 in
   specificati da \var{mode}.
   
   \bodydesc{La funzione ritorna il file descriptor in caso di successo e -1 in
-    caso di errore. In questo caso la variabile \var{errno} viene settata ad
-    uno dei valori:
+    caso di errore. In questo caso la variabile \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
   \item[\macro{EEXIST}] \var{pathname} esiste e si è specificato
     \macro{O\_CREAT} e \macro{O\_EXCL}.  
   \begin{errlist}
   \item[\macro{EEXIST}] \var{pathname} esiste e si è specificato
     \macro{O\_CREAT} e \macro{O\_EXCL}.  
@@ -192,7 +193,7 @@ prototipo 
     l'accesso in scrittura. 
   \item[\macro{ENOTDIR}] si è specificato \macro{O\_DIRECTORY} e \var{pathname}
     non è una directory.
     l'accesso in scrittura. 
   \item[\macro{ENOTDIR}] si è specificato \macro{O\_DIRECTORY} e \var{pathname}
     non è una directory.
-  \item[\macro{ENXIO}] si sono settati \macro{O\_NOBLOCK} o \macro{O\_WRONLY}
+  \item[\macro{ENXIO}] si sono impostati \macro{O\_NOBLOCK} o \macro{O\_WRONLY}
     ed il file è una fifo che non viene letta da nessun processo o
     \var{pathname} è un file di dispositivo ma il dispositivo è assente.
   \item[\macro{ENODEV}] \var{pathname} si riferisce a un file di dispositivo
     ed il file è una fifo che non viene letta da nessun processo o
     \var{pathname} è un file di dispositivo ma il dispositivo è assente.
   \item[\macro{ENODEV}] \var{pathname} si riferisce a un file di dispositivo
@@ -237,7 +238,7 @@ sempre il file descriptor con il valore pi
     solo per le fifo, torneremo questo in \secref{sec:ipc_named_pipe}). \\
     \macro{O\_NOCTTY} & se \var{pathname} si riferisce ad un device di
     terminale, questo non diventerà il terminale di controllo, anche se il
     solo per le fifo, torneremo questo in \secref{sec:ipc_named_pipe}). \\
     \macro{O\_NOCTTY} & se \var{pathname} si riferisce ad un device di
     terminale, questo non diventerà il terminale di controllo, anche se il
-    processo non ne ha ancora uno (si veda \secref{sec:sess_xxx}). \\
+    processo non ne ha ancora uno (si veda \secref{sec:sess_ctrl_term}). \\
     \macro{O\_SHLOCK} & opzione di BSD, acquisisce uno shared lock (vedi
     \secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\
     \macro{O\_EXLOCK} & opzione di BSD, acquisisce uno lock esclusivo (vedi
     \macro{O\_SHLOCK} & opzione di BSD, acquisisce uno shared lock (vedi
     \secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\
     \macro{O\_EXLOCK} & opzione di BSD, acquisisce uno lock esclusivo (vedi
@@ -263,7 +264,7 @@ sempre il file descriptor con il valore pi
     \hline
     \hline  % modalità di operazione col file
     \macro{O\_APPEND} & il file viene aperto in append mode. Prima di ciascuna
     \hline
     \hline  % modalità di operazione col file
     \macro{O\_APPEND} & il file viene aperto in append mode. Prima di ciascuna
-    scrittura la posizione corrente viene sempre settata alla fine del
+    scrittura la posizione corrente viene sempre impostata alla fine del
     file. Può causare corruzione del file con NFS se più di un processo scrive
     allo stesso tempo.\footnotemark\\
     \macro{O\_NONBLOCK} & il file viene aperto in modalità non bloccante per
     file. Può causare corruzione del file con NFS se più di un processo scrive
     allo stesso tempo.\footnotemark\\
     \macro{O\_NONBLOCK} & il file viene aperto in modalità non bloccante per
@@ -275,7 +276,7 @@ sempre il file descriptor con il valore pi
     \macro{O\_NDELAY} & in Linux\footnotemark\ è sinonimo di 
     \macro{O\_NONBLOCK}.\\
     \macro{O\_ASYNC} & apre il file per l'I/O in modalità
     \macro{O\_NDELAY} & in Linux\footnotemark\ è sinonimo di 
     \macro{O\_NONBLOCK}.\\
     \macro{O\_ASYNC} & apre il file per l'I/O in modalità
-    asincrona (vedi \secref{sec:file_asyncronous_io}). Quando è settato viene
+    asincrona (vedi \secref{sec:file_asyncronous_io}). Quando è impostato viene
     generato il segnale \macro{SIGIO} tutte le volte che sono disponibili
     dati in input sul file. \\ 
     \macro{O\_SYNC} & apre il file per l'input/output sincrono, ogni
     generato il segnale \macro{SIGIO} tutte le volte che sono disponibili
     dati in input sul file. \\ 
     \macro{O\_SYNC} & apre il file per l'input/output sincrono, ogni
@@ -292,10 +293,10 @@ sempre il file descriptor con il valore pi
   \label{tab:file_open_flags}
 \end{table}
 
   \label{tab:file_open_flags}
 \end{table}
 
-\footnotetext[2]{la man page di \func{open} segnala che questa opzione è
-  difettosa su NFS, e che i programmi che la usano per stabilire un file di
-  lock possono incorrere in una race condition\index{race condition}.  Si
-  consiglia come alternativa di usare un file con un nome univoco e la
+\footnotetext[2]{la pagina di manuale di \func{open} segnala che questa
+  opzione è difettosa su NFS, e che i programmi che la usano per stabilire un
+  file di lock possono incorrere in una race condition\index{race condition}.
+  Si consiglia come alternativa di usare un file con un nome univoco e la
   funzione \func{link} per verificarne l'esistenza.}
 
 \footnotetext[3]{\textit{Denial of Service}, si chiamano così attacchi miranti
   funzione \func{link} per verificarne l'esistenza.}
 
 \footnotetext[3]{\textit{Denial of Service}, si chiamano così attacchi miranti
@@ -320,9 +321,9 @@ input (avr
 
 Il nuovo file descriptor non è condiviso con nessun altro processo, (torneremo
 sulla condivisione dei file, in genere accessibile dopo una \func{fork}, in
 
 Il nuovo file descriptor non è condiviso con nessun altro processo, (torneremo
 sulla condivisione dei file, in genere accessibile dopo una \func{fork}, in
-\secref{sec:file_sharing}). Il nuovo file descriptor è settato di default per
-restare aperto attraverso una \func{exec} (come accennato in
-\secref{sec:proc_exec}) e l'offset è settato all'inizio del file.
+\secref{sec:file_sharing}). Il nuovo file descriptor è impostato per restare
+aperto attraverso una \func{exec} (come accennato in \secref{sec:proc_exec}) e
+l'offset è impostato all'inizio del file.
 
 L'argomento \param{mode} specifica i permessi con cui il file viene
 eventualmente creato; i valori possibili sono gli stessi già visti in
 
 L'argomento \param{mode} specifica i permessi con cui il file viene
 eventualmente creato; i valori possibili sono gli stessi già visti in
@@ -335,12 +336,13 @@ La funzione prevede diverse opzioni, che vengono specificate usando vari bit
 dell'argomento \param{flags}.  Alcuni di questi bit vanno anche a costituire
 il flag di stato del file (o \textit{file status flag}), che è mantenuto nel
 campo \var{f\_flags} della struttura \var{file} (al solito si veda lo schema
 dell'argomento \param{flags}.  Alcuni di questi bit vanno anche a costituire
 il flag di stato del file (o \textit{file status flag}), che è mantenuto nel
 campo \var{f\_flags} della struttura \var{file} (al solito si veda lo schema
-di \curfig).  Essi sono divisi in tre categorie principali:
+di \figref{fig:file_proc_file}).  Essi sono divisi in tre categorie
+principali:
 \begin{itemize}
 \item \textsl{i bit delle modalità di accesso}: specificano con quale modalità
   si accederà al file: i valori possibili sono lettura, scrittura o
   lettura/scrittura.  Uno di questi bit deve essere sempre specificato quando
 \begin{itemize}
 \item \textsl{i bit delle modalità di accesso}: specificano con quale modalità
   si accederà al file: i valori possibili sono lettura, scrittura o
   lettura/scrittura.  Uno di questi bit deve essere sempre specificato quando
-  si apre un file.  Vengono settati alla chiamata da \func{open}, e possono
+  si apre un file.  Vengono impostati alla chiamata da \func{open}, e possono
   essere riletti con una \func{fcntl} (fanno parte del \textit{file status
     flag}), ma non possono essere modificati.
 \item \textsl{i bit delle modalità di apertura}: permettono di specificare
   essere riletti con una \func{fcntl} (fanno parte del \textit{file status
     flag}), ma non possono essere modificati.
 \item \textsl{i bit delle modalità di apertura}: permettono di specificare
@@ -350,7 +352,7 @@ di \curfig).  Essi sono divisi in tre categorie principali:
 \item \textsl{i bit delle modalità di operazione}: permettono di specificare
   alcune caratteristiche del comportamento delle future operazioni sul file
   (come la \func{read} o la \func{write}). Anch'essi fanno parte del
 \item \textsl{i bit delle modalità di operazione}: permettono di specificare
   alcune caratteristiche del comportamento delle future operazioni sul file
   (come la \func{read} o la \func{write}). Anch'essi fanno parte del
-  \textit{file status flag}. Il loro valore è settato alla chiamata di
+  \textit{file status flag}. Il loro valore è impostato alla chiamata di
   \func{open}, ma possono essere riletti e modificati (insieme alle
   caratteristiche operative che controllano) con una \func{fcntl}.
 \end{itemize}
   \func{open}, ma possono essere riletti e modificati (insieme alle
   caratteristiche operative che controllano) con una \func{fcntl}.
 \end{itemize}
@@ -386,7 +388,7 @@ descriptor ritorna disponibile; il suo prototipo 
   Chiude il descrittore \var{fd}. 
   
   \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore,
   Chiude il descrittore \var{fd}. 
   
   \bodydesc{La funzione ritorna 0 in caso di successo e -1 in caso di errore,
-    ed in questo caso \var{errno} è settata ai valori:
+    ed in questo caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
     \item[\macro{EBADF}]  \var{fd} non è un descrittore valido.
     \item[\macro{EINTR}] la funzione è stata interrotta da un segnale.
   \begin{errlist}
     \item[\macro{EBADF}]  \var{fd} non è un descrittore valido.
     \item[\macro{EINTR}] la funzione è stata interrotta da un segnale.
@@ -433,17 +435,17 @@ lettura e scrittura avvengono a partire da questa posizione che viene
 automaticamente spostata in avanti del numero di byte letti o scritti.
 
 In genere (a meno di non avere richiesto la modalità \macro{O\_APPEND}) questa
 automaticamente spostata in avanti del numero di byte letti o scritti.
 
 In genere (a meno di non avere richiesto la modalità \macro{O\_APPEND}) questa
-posizione viene settata a zero all'apertura del file. È possibile settarla ad
+posizione viene impostata a zero all'apertura del file. È possibile impostarla ad
 un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
   \funcdecl{off\_t lseek(int fd, off\_t offset, int whence)}
 un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è:
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
   \funcdecl{off\_t lseek(int fd, off\_t offset, int whence)}
-  Setta la posizione attuale nel file. 
+  Imposta la posizione attuale nel file. 
   
   \bodydesc{La funzione ritorna valore della posizione corrente in caso di
   
   \bodydesc{La funzione ritorna valore della posizione corrente in caso di
-    successo e -1 in caso di errore nel qual caso \var{errno} viene settata ad
-    uno dei valori:
+    successo e -1 in caso di errore nel qual caso \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
     \item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
     \item[\macro{EINVAL}] \param{whence} non è un valore valido.
   \begin{errlist}
     \item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
     \item[\macro{EINVAL}] \param{whence} non è un valore valido.
@@ -451,7 +453,7 @@ un valore qualsiasi con la funzione \func{lseek}, il cui prototipo 
   ed inoltre \macro{EBADF}.}
 \end{functions}
 
   ed inoltre \macro{EBADF}.}
 \end{functions}
 
-La nuova posizione è settata usando il valore specificato da \param{offset},
+La nuova posizione è impostata usando il valore specificato da \param{offset},
 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
 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
@@ -466,7 +468,7 @@ seguenti valori\footnote{per compatibilit
 \end{basedescript}
 
 Come accennato in \secref{sec:file_file_size} con \func{lseek} è possibile
 \end{basedescript}
 
 Come accennato in \secref{sec:file_file_size} con \func{lseek} è possibile
-settare la posizione corrente anche al di la della fine del file, e alla
+impostare la posizione corrente anche al di la della fine del file, e alla
 successiva scrittura il file sarà esteso. La chiamata non causa nessuna
 attività di input/output, si limita a modificare la posizione corrente nel
 kernel (cioè \var{f\_pos} in \var{file}, vedi \figref{fig:file_proc_file}).
 successiva scrittura il file sarà esteso. La chiamata non causa nessuna
 attività di input/output, si limita a modificare la posizione corrente nel
 kernel (cioè \var{f\_pos} in \var{file}, vedi \figref{fig:file_proc_file}).
@@ -478,7 +480,7 @@ funzione con \code{lseek(fd, 0, SEEK\_CUR)}.
 Si tenga presente inoltre che usare \macro{SEEK\_END} non assicura affatto che
 successiva scrittura avvenga alla fine del file, infatti se questo è stato
 aperto anche da un altro processo che vi ha scritto, la fine del file può
 Si tenga presente inoltre che usare \macro{SEEK\_END} non assicura affatto che
 successiva scrittura avvenga alla fine del file, infatti se questo è stato
 aperto anche da un altro processo che vi ha scritto, la fine del file può
-essersi spostata, ma noi scriveremo alla posizione settata in precedenza.
+essersi spostata, ma noi scriveremo alla posizione impostata in precedenza.
 (questa è una potenziale sorgente di 
 \textit{race condition}\index{race condition}, vedi \secref{sec:file_atomic}).
 
 (questa è una potenziale sorgente di 
 \textit{race condition}\index{race condition}, vedi \secref{sec:file_atomic}).
 
@@ -503,8 +505,7 @@ utilizzando la funzione \func{read}, il cui prototipo 
   Cerca di leggere \var{count} byte dal file \var{fd} al buffer \var{buf}.
   
   \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e
   Cerca di leggere \var{count} byte dal file \var{fd} al buffer \var{buf}.
   
   \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
-    valori:
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EINTR}] la funzione è stata interrotta da un segnale prima di
     aver potuto leggere qualsiasi dato.
   \begin{errlist}
   \item[\macro{EINTR}] la funzione è stata interrotta da un segnale prima di
     aver potuto leggere qualsiasi dato.
@@ -581,8 +582,8 @@ Cerca di leggere \var{count} byte dal file \var{fd}, a partire dalla posizione
 \var{offset}, nel buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
 \var{offset}, nel buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
-  in caso di errore, nel qual caso \var{errno} viene settata secondo i valori
-  già visti per \func{read} e \func{lseek}.}
+  in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+  \func{read} e \func{lseek}.}
 \end{prototype}
 \noindent che però diventa accessibile solo con la definizione della macro:
 \begin{verbatim}
 \end{prototype}
 \noindent che però diventa accessibile solo con la definizione della macro:
 \begin{verbatim}
@@ -608,8 +609,7 @@ funzione \func{write}, il cui prototipo 
   Scrive \var{count} byte dal buffer \var{buf} sul file \var{fd}.
   
   \bodydesc{La funzione ritorna il numero di byte scritti in caso di successo
   Scrive \var{count} byte dal buffer \var{buf} sul file \var{fd}.
   
   \bodydesc{La funzione ritorna il numero di byte scritti in caso di successo
-    e -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
-    valori:
+    e -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EINVAL}] \var{fd} è connesso ad un oggetto che non consente la
     scrittura.
   \begin{errlist}
   \item[\macro{EINVAL}] \var{fd} è connesso ad un oggetto che non consente la
     scrittura.
@@ -654,8 +654,8 @@ Cerca di scrivere sul file \var{fd}, a partire dalla posizione \var{offset},
 \var{count} byte dal buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
 \var{count} byte dal buffer \var{buf}.
   
 \bodydesc{La funzione ritorna il numero di byte letti in caso di successo e -1
-  in caso di errore, nel qual caso \var{errno} viene settata secondo i valori
-  già visti per \func{write} e \func{lseek}.}
+  in caso di errore, nel qual caso \var{errno} assumerà i valori già visti per
+  \func{write} e \func{lseek}.}
 \end{prototype}
 \noindent e per essa valgono le stesse considerazioni fatte per \func{pread}.
 
 \end{prototype}
 \noindent e per essa valgono le stesse considerazioni fatte per \func{pread}.
 
@@ -705,13 +705,13 @@ stesso file, in particolare occorre tenere presente che:
   scrittura eccede la dimensione corrente del file questo verrà esteso
   automaticamente con l'aggiornamento del campo \var{i\_size} nell'inode.
 \item se un file è in modalità \macro{O\_APPEND} tutte le volte che viene
   scrittura eccede la dimensione corrente del file questo verrà esteso
   automaticamente con l'aggiornamento del campo \var{i\_size} nell'inode.
 \item se un file è in modalità \macro{O\_APPEND} tutte le volte che viene
-  effettuata una scrittura la posizione corrente viene prima settata alla
+  effettuata una scrittura la posizione corrente viene prima impostata alla
   dimensione corrente del file letta dall'inode. Dopo la scrittura il file
   viene automaticamente esteso.
 \item l'effetto di \func{lseek} è solo quello di cambiare il campo \var{f\_pos}
   nella struttura \var{file} della \textit{file table}, non c'è nessuna
   operazione sul file su disco. Quando la si usa per porsi alla fine del file
   dimensione corrente del file letta dall'inode. Dopo la scrittura il file
   viene automaticamente esteso.
 \item l'effetto di \func{lseek} è solo quello di cambiare il campo \var{f\_pos}
   nella struttura \var{file} della \textit{file table}, non c'è nessuna
   operazione sul file su disco. Quando la si usa per porsi alla fine del file
-  la posizione viene settata leggendo la dimensione corrente dall'inode.
+  la posizione viene impostata leggendo la dimensione corrente dall'inode.
 \end{itemize}
 
 \begin{figure}[htb]
 \end{itemize}
 
 \begin{figure}[htb]
@@ -736,7 +736,7 @@ posizione corrente sul file. Questo ha le conseguenze descritte a suo tempo in
 corrente nel file varierà per entrambi i processi (in quanto verrà modificato
 \var{f\_pos} che è la stesso per entrambi).
 
 corrente nel file varierà per entrambi i processi (in quanto verrà modificato
 \var{f\_pos} che è la stesso per entrambi).
 
-Si noti inoltre che anche i flag di stato del file (quelli settati
+Si noti inoltre che anche i flag di stato del file (quelli impostati
 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
 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
@@ -765,13 +765,13 @@ utilizzare meccanismi di sincronizzazione pi
 
 Un caso tipico di necessità di accesso condiviso in scrittura è quello in cui
 vari processi devono scrivere alla fine di un file (ad esempio un file di
 
 Un caso tipico di necessità di accesso condiviso in scrittura è quello in cui
 vari processi devono scrivere alla fine di un file (ad esempio un file di
-log). Come accennato in \secref{sec:file_lseek} settare la posizione alla fine
+log). Come accennato in \secref{sec:file_lseek} impostare la posizione alla fine
 del file e poi scrivere può condurre ad una 
 \textit{race condition}\index{race condition}: 
 infatti può succedere che un secondo processo scriva alla fine
 del file fra la \func{lseek} e la \func{write}; in questo caso, come abbiamo
 appena visto, il file sarà esteso, ma il nostro primo processo avrà ancora la
 del file e poi scrivere può condurre ad una 
 \textit{race condition}\index{race condition}: 
 infatti può succedere che un secondo processo scriva alla fine
 del file fra la \func{lseek} e la \func{write}; in questo caso, come abbiamo
 appena visto, il file sarà esteso, ma il nostro primo processo avrà ancora la
-posizione corrente settata con la \func{lseek} che non corrisponde più alla
+posizione corrente impostata con la \func{lseek} che non corrisponde più alla
 fine del file, e la successiva \func{write} sovrascriverà i dati del secondo
 processo.
 
 fine del file, e la successiva \func{write} sovrascriverà i dati del secondo
 processo.
 
@@ -874,7 +874,7 @@ prototipo 
   Crea una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
   Crea una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei
     valori:
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
     valori:
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
@@ -927,8 +927,7 @@ prototipo 
   Rende \param{newfd} una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
   Rende \param{newfd} una copia del file descriptor \param{oldfd}.
   
   \bodydesc{La funzione ritorna il nuovo file descriptor in caso di successo e
-    -1 in caso di errore, nel qual caso \var{errno} viene settata ad uno dei
-    valori:
+    -1 in caso di errore, nel qual caso \var{errno} assumerà uno dei valori:
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto o \param{newfd} ha un
     valore fuori dall'intervallo consentito per i file descriptor.
   \begin{errlist}
   \item[\macro{EBADF}] \param{oldfd} non è un file aperto o \param{newfd} ha un
     valore fuori dall'intervallo consentito per i file descriptor.
@@ -969,11 +968,11 @@ file descriptor viene usata la funzione \func{fcntl} il cui prototipo 
   sul file \param{fd}.
   
   \bodydesc{La funzione ha valori di ritorno diversi a seconda
   sul file \param{fd}.
   
   \bodydesc{La funzione ha valori di ritorno diversi a seconda
-    dell'operazione. In caso di errore il valore di ritorno è -1 e la
-    variabile \var{errno} viene settata ad un opportuno codice, quelli validi
-    in generale sono:
+    dell'operazione. In caso di errore il valore di ritorno è sempre -1 ed il
+    codice dell'errore è restituito nella variabile \var{errno}; i codici
+    possibili dipendono dal tipo di operazione, l'unico valido in generale è:
   \begin{errlist}
   \begin{errlist}
-  \item[\macro{EBADF}] \param{oldfd} non è un file aperto.
+  \item[\macro{EBADF}] \param{fd} non è un file aperto.
   \end{errlist}}
 \end{functions}
 
   \end{errlist}}
 \end{functions}
 
@@ -988,58 +987,60 @@ valori 
   \macro{EINVAL} se \param{arg} è negativo o maggiore del massimo consentito o
   \macro{EMFILE} se il processo ha già raggiunto il massimo numero di
   descrittori consentito.
   \macro{EINVAL} se \param{arg} è negativo o maggiore del massimo consentito o
   \macro{EMFILE} se il processo ha già raggiunto il massimo numero di
   descrittori consentito.
-\item[\macro{F\_SETFD}] setta il valore del \textit{file descriptor flag}
+\item[\macro{F\_SETFD}] imposta il valore del \textit{file descriptor flag}
   al valore specificato con \param{arg}. Al momento l'unico bit usato è
   quello di \textit{close on exec}, identificato dalla costante
   \macro{FD\_CLOEXEC}.
 \item[\macro{F\_GETFD}] ritorna il valore del \textit{file descriptor flag} di
   al valore specificato con \param{arg}. Al momento l'unico bit usato è
   quello di \textit{close on exec}, identificato dalla costante
   \macro{FD\_CLOEXEC}.
 \item[\macro{F\_GETFD}] ritorna il valore del \textit{file descriptor flag} di
-  \var{fd}, se \macro{FD\_CLOEXEC} è settato i file descriptor aperti vengono
-  chiusi attraverso una \func{exec} altrimenti (il default) restano aperti.
+  \var{fd}, se \macro{FD\_CLOEXEC} è impostato i file descriptor aperti
+  vengono chiusi attraverso una \func{exec} altrimenti (il comportamento
+  predefinito) restano aperti.
 \item[\macro{F\_GETFL}] ritorna il valore del \textit{file status flag},
 \item[\macro{F\_GETFL}] ritorna il valore del \textit{file status flag},
-  permette cioè di rileggere quei bit settati da \func{open} all'apertura del
+  permette cioè di rileggere quei bit impostati da \func{open} all'apertura del
   file che vengono memorizzati (quelli riportati nella prima e terza sezione
   di \tabref{tab:file_open_flags}). 
   file che vengono memorizzati (quelli riportati nella prima e terza sezione
   di \tabref{tab:file_open_flags}). 
-\item[\macro{F\_SETFL}] setta il \textit{file status flag} al valore
-  specificato da \param{arg}, possono essere settati solo i bit riportati
-  nella terza sezione di \tabref{tab:file_open_flags}.\footnote{la man page
-    riporta come settabili solo \macro{O\_APPEND}, \macro{O\_NONBLOCK} e
-    \macro{O\_ASYNC}.}
+\item[\macro{F\_SETFL}] imposta il \textit{file status flag} al valore
+  specificato da \param{arg}, possono essere impostati solo i bit riportati
+  nella terza sezione di \tabref{tab:file_open_flags}.\footnote{la pagina di
+    manuale riporta come impostabili solo \macro{O\_APPEND},
+    \macro{O\_NONBLOCK} e \macro{O\_ASYNC}.}
 \item[\macro{F\_GETLK}] se un file lock è attivo restituisce nella struttura
   \param{lock} la struttura \type{flock} che impedisce l'acquisizione del
 \item[\macro{F\_GETLK}] se un file lock è attivo restituisce nella struttura
   \param{lock} la struttura \type{flock} che impedisce l'acquisizione del
-  blocco, altrimenti setta il campo \var{l\_type} a \macro{F\_UNLCK} (per i
+  blocco, altrimenti imposta il campo \var{l\_type} a \macro{F\_UNLCK} (per i
   dettagli sul \textit{file locking} vedi \secref{sec:file_locking}).
 \item[\macro{F\_SETLK}] richiede il file lock specificato da \param{lock} se
   \var{l\_type} è \macro{F\_RDLCK} o \macro{F\_WRLLCK} o lo rilascia se
   \var{l\_type} è \macro{F\_UNLCK}. Se il lock è tenuto da qualcun'altro
   dettagli sul \textit{file locking} vedi \secref{sec:file_locking}).
 \item[\macro{F\_SETLK}] richiede il file lock specificato da \param{lock} se
   \var{l\_type} è \macro{F\_RDLCK} o \macro{F\_WRLLCK} o lo rilascia se
   \var{l\_type} è \macro{F\_UNLCK}. Se il lock è tenuto da qualcun'altro
-  ritorna immediatamente restituendo -1 e setta \var{errno} a \macro{EACCES} o
-  \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
+  ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES}
+  \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
   \secref{sec:file_locking}).
 \item[\macro{F\_SETLKW}] identica a \macro{F\_SETLK} eccetto per il fatto che
   la funzione non ritorna subito ma attende che il blocco sia rilasciato. Se
   \secref{sec:file_locking}).
 \item[\macro{F\_SETLKW}] identica a \macro{F\_SETLK} eccetto per il fatto che
   la funzione non ritorna subito ma attende che il blocco sia rilasciato. Se
-  l'attesa viene interrotta da un segnale la funzione restituisce -1 e setta
+  l'attesa viene interrotta da un segnale la funzione restituisce -1 e imposta
   \var{errno} a \macro{EINTR} (per i dettagli sul \textit{file locking} vedi
   \secref{sec:file_locking}).
 \item[\macro{F\_GETOWN}] restituisce il \acr{pid} del processo o il process
   group che è preposto alla ricezione dei segnali \macro{SIGIO} e
   \macro{SIGURG} per gli eventi associati al file descriptor \var{fd}. Il
   process group è restituito come valore negativo.
   \var{errno} a \macro{EINTR} (per i dettagli sul \textit{file locking} vedi
   \secref{sec:file_locking}).
 \item[\macro{F\_GETOWN}] restituisce il \acr{pid} del processo o il process
   group che è preposto alla ricezione dei segnali \macro{SIGIO} e
   \macro{SIGURG} per gli eventi associati al file descriptor \var{fd}. Il
   process group è restituito come valore negativo.
-\item[\macro{F\_SETOWN}] setta il processo o process group che riceverà i
+\item[\macro{F\_SETOWN}] imposta il processo o process group che riceverà i
   segnali \macro{SIGIO} e \macro{SIGURG} per gli eventi associati al file
   segnali \macro{SIGIO} e \macro{SIGURG} per gli eventi associati al file
-  descriptor \var{fd}.  I process group sono settati usando valori negativi.
+  descriptor \var{fd}.  I process group sono impostati usando valori negativi.
 \item[\macro{F\_GETSIG}] restituisce il valore del segnale mandato quando ci
 \item[\macro{F\_GETSIG}] restituisce il valore del segnale mandato quando ci
-  sono dati disponibili in input su un file descriptor aperto o settato in I/O
-  asincrono. Il valore 0 indica il valore default (che è \macro{SIGIO}), un
-  valore diverso da zero indica il segnale richiesto, (che può essere lo
-  stesso \macro{SIGIO}).
-\item[\macro{F\_SETSIG}] setta il segnale da inviare quando diventa possibile
-  effettuare I/O sul file descriptor in caso di I/O asincrono. Il valore zero
-  indica di usare il segnale di default, \macro{SIGIO}. Un altro valore
-  (compreso lo stesso \macro{SIGIO}) specifica il segnale voluto; l'uso di un
-  valore diverso da zero permette inoltre, se si è installato il manipolatore
-  del segnale come \var{sa\_sigaction} usando \macro{SA\_SIGINFO}, (vedi
-  \secref{sec:sig_sigaction}), di rendere disponibili al manipolatore
-  informazioni ulteriori informazioni riguardo il file che ha generato il
-  segnale attraverso i valori restituiti in \type{siginfo\_t} (come vedremo in
+  sono dati disponibili in input su un file descriptor aperto o impostato in
+  I/O asincrono. Il valore 0 indica il valore predefinito (che è
+  \macro{SIGIO}), un valore diverso da zero indica il segnale richiesto, (che
+  può essere lo stesso \macro{SIGIO}).
+\item[\macro{F\_SETSIG}] imposta il segnale da inviare quando diventa
+  possibile effettuare I/O sul file descriptor in caso di I/O asincrono. Il
+  valore zero indica di usare il segnale predefinito, \macro{SIGIO}. Un altro
+  valore (compreso lo stesso \macro{SIGIO}) specifica il segnale voluto; l'uso
+  di un valore diverso da zero permette inoltre, se si è installato il
+  manipolatore del segnale come \var{sa\_sigaction} usando
+  \macro{SA\_SIGINFO}, (vedi \secref{sec:sig_sigaction}), di rendere
+  disponibili al manipolatore informazioni ulteriori informazioni riguardo il
+  file che ha generato il segnale attraverso i valori restituiti in
+  \type{siginfo\_t} (come vedremo in
   \secref{sec:file_asyncronous_io}).\footnote{i due comandi \macro{F\_SETSIG}
     e \macro{F\_GETSIG} sono una estensione specifica di Linux.}
 \end{basedescript}
   \secref{sec:file_asyncronous_io}).\footnote{i due comandi \macro{F\_SETSIG}
     e \macro{F\_GETSIG} sono una estensione specifica di Linux.}
 \end{basedescript}
@@ -1069,7 +1070,7 @@ valido anche per l'interazione con i pi
 interagire con le stesse funzioni usate per i normali file di dati,
 esisteranno sempre caratteristiche peculiari, specifiche dell'hardware e della
 funzionalità che ciascuno di essi provvede, che non possono venire comprese in
 interagire con le stesse funzioni usate per i normali file di dati,
 esisteranno sempre caratteristiche peculiari, specifiche dell'hardware e della
 funzionalità che ciascuno di essi provvede, che non possono venire comprese in
-questa interfaccia astratta (un caso tipico è il settaggio della velocità di
+questa interfaccia astratta (un caso tipico è l'impostazione della velocità di
 una porta seriale, o le dimensioni di un framebuffer).
 
 Per questo motivo l'architettura del sistema ha previsto l'esistenza di una
 una porta seriale, o le dimensioni di un framebuffer).
 
 Per questo motivo l'architettura del sistema ha previsto l'esistenza di una
@@ -1083,8 +1084,8 @@ per ogni singolo dispositivo.  Il prototipo di questa funzione 
   
   \bodydesc{La funzione nella maggior parte dei casi ritorna 0, alcune
     operazioni usano però il valore di ritorno per restituire informazioni. In
   
   \bodydesc{La funzione nella maggior parte dei casi ritorna 0, alcune
     operazioni usano però il valore di ritorno per restituire informazioni. In
-    caso di errore viene sempre restituito -1 e \var{errno} viene settata ad
-    uno dei valori seguenti:
+    caso di errore viene sempre restituito -1 ed \var{errno} assumerà uno dei
+    valori:
   \begin{errlist}
   \item[\macro{ENOTTY}] il file \param{fd} non è associato con un device, o la
     richiesta non è applicabile all'oggetto a cui fa riferimento \param{fd}.
   \begin{errlist}
   \item[\macro{ENOTTY}] il file \param{fd} non è associato con un device, o la
     richiesta non è applicabile all'oggetto a cui fa riferimento \param{fd}.
@@ -1105,8 +1106,8 @@ sia attraverso il valore di ritorno che attraverso il terzo argomento
 \item l'esecuzione di una traccia audio di un CDROM.
 \item i comandi di avanti veloce e riavvolgimento di un nastro.
 \item il comando di espulsione di un dispositivo rimovibile.
 \item l'esecuzione di una traccia audio di un CDROM.
 \item i comandi di avanti veloce e riavvolgimento di un nastro.
 \item il comando di espulsione di un dispositivo rimovibile.
-\item il settaggio della velocità trasmissione di una linea seriale.
-\item il settaggio della frequenza e della durata dei suoni emessi dallo
+\item l'impostazione della velocità trasmissione di una linea seriale.
+\item l'impostazione della frequenza e della durata dei suoni emessi dallo
   speaker.
 \end{itemize*}
 
   speaker.
 \end{itemize*}
 
@@ -1129,10 +1130,10 @@ specifici (ad esempio la gestione dei terminali 
 \func{ioctl} in quasi tutte le implementazioni di Unix), qui riportiamo solo i
 valori che sono definiti per ogni file:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
 \func{ioctl} in quasi tutte le implementazioni di Unix), qui riportiamo solo i
 valori che sono definiti per ogni file:
 \begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\macro{FIOCLEX}] Setta il bit di \textit{close on exec}.
+\item[\macro{FIOCLEX}] Imposta il bit di \textit{close on exec}.
 \item[\macro{FIONCLEX}] Cancella il bit di \textit{close on exec}.
 \item[\macro{FIOASYNC}] Abilita l'I/O asincrono.
 \item[\macro{FIONCLEX}] Cancella il bit di \textit{close on exec}.
 \item[\macro{FIOASYNC}] Abilita l'I/O asincrono.
-\item[\macro{FIONBIO}] Abilità l'I/O in modalità non bloccante.
+\item[\macro{FIONBIO}] Abilita l'I/O in modalità non bloccante.
 \end{basedescript}
 relativi ad operazioni comunque eseguibili anche attraverso \func{fcntl}.
 
 \end{basedescript}
 relativi ad operazioni comunque eseguibili anche attraverso \func{fcntl}.