Modifiche minime
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 11 Nov 2001 22:43:04 +0000 (22:43 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 11 Nov 2001 22:43:04 +0000 (22:43 +0000)
fileunix.tex
gapil.tex

index c2412e8139397171bae5f769e764872b4626e44c..258eae0adcc24fa0041238985bd5a4794e44e0a0 100644 (file)
@@ -212,7 +212,6 @@ di \secref{sec:file_std_descr}: se ad esempio si chiude lo standard input e si
 apre subito dopo un nuovo file questo diventerà il nuovo standard input (avrà
 cioè il file descriptor 0).
 
-
 \begin{table}[!htb]
   \centering
   \footnotesize
@@ -230,12 +229,12 @@ cio
     titolarità del file viste in \secref{sec:file_ownership}. Il parametro
     \var{mode} deve essere specificato. \\
     \macro{O\_EXCL} & usato in congiunzione con \macro{O\_CREAT} fa sì che
-    l'esistenza del file diventi un errore\footnote{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.  Si consiglia come alternativa di usare un file con un nome
-    univoco e la funzione \func{link} per verificarne l'esistenza.} che fa
-    fallire \func{open} con \macro{EEXIST}. \\
+    l'esistenza del file diventi un errore\protect\footnote{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.  Si consiglia come alternativa di usare un file 
+      con un nome univoco e la funzione \func{link} per verificarne 
+      l'esistenza.} che fa fallire \func{open} con \macro{EEXIST}. \\
     \macro{O\_NONBLOCK} & apre il file in modalità non bloccante. Questo
     valore specifica anche una modalità di operazione (vedi sotto), e 
     comporta che \func{open} ritorni immediatamente (torneremo su
@@ -257,12 +256,12 @@ cio
     opzione è ignorata. \\
     \macro{O\_DIRECTORY} & se \var{pathname} non è una directory la chiamata
     fallisce. Questo flag è specifico di Linux ed è stato introdotto con il
-    kernel 2.1.126 per evitare dei DoS\footnote{Denial of Service, si chiamano
-    così attacchi miranti ad impedire un servizio causando una qualche forma
-    di carico eccessivo per il sistema, che resta bloccato nelle risposte
-    all'attacco} quando \func{opendir} viene chiamata su una fifo o su un
-    device di unità a nastri, non deve essere utilizzato al di fuori
-    dell'implementazione di \func{opendir}. \\
+    kernel 2.1.126 per evitare dei DoS\protect\footnote{Denial of Service, si 
+      chiamano così attacchi miranti ad impedire un servizio causando una 
+      qualche forma di carico eccessivo per il sistema, che resta bloccato 
+      nelle risposte all'attacco} quando \func{opendir} viene chiamata su una 
+    fifo o su un device di unità a nastri, non deve essere utilizzato al di 
+    fuori dell'implementazione di \func{opendir}. \\
     \macro{O\_LARGEFILE} & nel caso di sistemi a 32 bit che supportano file di
     grandi dimensioni consente di aprire file le cui dimensioni non possono
     essere rappresentate da numeri a 31 bit. \\
@@ -672,8 +671,8 @@ stesso file, in particolare occorre tenere presente che:
   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
-  dimensione corrente del file letta dall'inode. In questo modo il file viene
-  automaticamente esteso.
+  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
@@ -713,11 +712,17 @@ vengono toccati anche in caso di condivisione della voce della \textit{file
 
 
 
-
 \subsection{Operazioni atomiche coi file}
 \label{sec:file_atomic}
 
-cvs add 
+Come si è visto in un sistema unix è sempre possibile per più processi
+accedere in contemporanea allo stesso file, e che le operazioni di lettura e
+scrittura saranno fatte in base alla posizione corrente nel file. Ovviamente
+senza prevedere opportuni meccanismi di sincronizzazione le operazioni
+potranno mescolarsi in maniera imprevedibile. L'unica garanzia è che se si è
+in modalità \macro{O\_APPEND} il sistema assicura che si scriva (con il
+procedimento appena esposto) sempre alla fine del file.
+
 
 
 
@@ -727,8 +732,7 @@ cvs add
 
 
 \begin{figure}[htb]
-  \centering
-  \includegraphics[width=14cm]{img/filedup.eps}
+  \centering \includegraphics[width=14cm]{img/filedup.eps}
   \caption{Schema dell'accesso ai file duplicati}
   \label{fig:file_dup}
 \end{figure}
index 31347c061f24762330cd787db824bd580198fdbf..fc2381821a5bb26ab4e715d4db5237890a122ebe 100644 (file)
--- a/gapil.tex
+++ b/gapil.tex
@@ -1,4 +1,4 @@
-%% 
+%%
 %% GaPiL : Guida alla Programmazione in Linux
 %% 
 %% S. Piccardi Oct. 2000