From: Simone Piccardi Date: Sun, 11 Nov 2001 22:43:04 +0000 (+0000) Subject: Modifiche minime X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=8c5d007d4ff1ce15c7430bf3be8f6015cc0b6cf2 Modifiche minime --- diff --git a/fileunix.tex b/fileunix.tex index c2412e8..258eae0 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -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} diff --git a/gapil.tex b/gapil.tex index 31347c0..fc23818 100644 --- a/gapil.tex +++ b/gapil.tex @@ -1,4 +1,4 @@ -%% +%% %% GaPiL : Guida alla Programmazione in Linux %% %% S. Piccardi Oct. 2000