Iniziato esempio Mutex
[gapil.git] / fileunix.tex
index cec06e367c7b742a15d0212e5f7662d533cd5b96..0e2658ee7807e203e26f4a9a056fed7f8a5461cb 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
@@ -294,9 +295,10 @@ sempre il file descriptor con il valore pi
 
 \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
 
 \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.}
+  file di lock (vedi \secref{sec:ipc_file_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
   ad impedire un servizio causando una qualche forma di carico eccessivo per
 
 \footnotetext[3]{\textit{Denial of Service}, si chiamano così attacchi miranti
   ad impedire un servizio causando una qualche forma di carico eccessivo per
@@ -335,7 +337,8 @@ 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
 \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
@@ -433,8 +436,8 @@ 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 impostata a zero all'apertura del file. È possibile impostarla ad
-un valore qualsiasi con la funzione \func{lseek}, il cui prototipo è:
+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}
 \begin{functions}
   \headdecl{sys/types.h}
   \headdecl{unistd.h}
@@ -485,11 +488,12 @@ essersi spostata, ma noi scriveremo alla posizione impostata 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
 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
-  sistemi, usando \macro{SEEK\_SET}, in questo caso ritornano il numero di
-  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.
+supportano questa funzione, come ad esempio per i file di
+terminale.\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 niente al proposito. Infine alcuni file speciali, ad
+esempio \file{/dev/null}, non causano un errore ma restituiscono un valore
+indefinito.
 
 
 \subsection{La funzione \func{read}}
 
 
 \subsection{La funzione \func{read}}
@@ -1002,21 +1006,20 @@ valori 
   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}.}
   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
-  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
-  ritorna immediatamente restituendo -1 e imposta \var{errno} a \macro{EACCES}
-  o \macro{EAGAIN} (per i dettagli sul \textit{file locking} vedi
-  \secref{sec:file_locking}).
+\item[\macro{F\_GETLK}] richiede un controllo sul file lock specificato da
+  \param{lock}, sovrascrivendo la struttura da esso puntata con il risultato
+  (questa funzionalità è trattata in dettaglio in
+  \secref{sec:file_posix_lock}).
+\item[\macro{F\_SETLK}] richiede o rilascia un file lock a seconda di quanto
+  specificato nella struttura puntata da \param{lock}. Se il lock è tenuto da
+  qualcun'altro ritorna immediatamente restituendo -1 e imposta \var{errno} a
+  \macro{EACCES} o \macro{EAGAIN} (questa funzionalità è trattata in dettaglio
+  in \secref{sec:file_posix_lock}).
 \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 imposta
 \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 imposta
-  \var{errno} a \macro{EINTR} (per i dettagli sul \textit{file locking} vedi
-  \secref{sec:file_locking}).
+  \var{errno} a \macro{EINTR} (questa funzionalità è trattata in dettaglio in
+  \secref{sec:file_posix_lock}).
 \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
 \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