X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=e1ca3abab354aa54b93571f9ea39a96a401b3fc3;hp=5734c43c02e99db3ba6261315b1da465ea94597a;hb=88fefd4ca97449596a2b8689e89de5e66d9d6758;hpb=608bbf38416013dc331e1ef2e5dfe01855b6158b diff --git a/fileunix.tex b/fileunix.tex index 5734c43..e1ca3ab 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -166,7 +166,6 @@ system call del kernel. La funzione \func{open} è la funzione fondamentale per accedere ai file, ed è quella che crea l'associazione fra un pathname ed un file descriptor; il suo prototipo è: - \begin{functions} \headdecl{sys/types.h} \headdecl{sys/stat.h} @@ -265,9 +264,9 @@ comportamento. \textbf{Flag} & \textbf{Descrizione} \\ \hline \hline % modailtà di accesso al file - \macro{O\_RDONLY} & apre il file in sola lettura\\ - \macro{O\_WRONLY} & apre il file in sola scrittura\\ - \macro{O\_RDWR} & apre il file lettura/scrittura\\ + \macro{O\_RDONLY} & apre il file in sola lettura. \\ + \macro{O\_WRONLY} & apre il file in sola scrittura. \\ + \macro{O\_RDWR} & apre il file lettura/scrittura. \\ \hline % modalita di apertura del file \hline \macro{O\_CREAT} & se il file non esiste verrà creato, con le regole di @@ -279,26 +278,26 @@ comportamento. 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}.\\ + 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 - questo in \secref{sec:file_noblocking}). \\ + questo in \secref{sec:file_noblocking}). \\ \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_xxx}). \\ \macro{O\_SHLOCK} & opzione di BSD, acquisisce uno shared lock (vedi - \secref{sec:file_locking}) sul file. Non è disponibile in Linux.\\ + \secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\ \macro{O\_EXLOCK} & opzione di BSD, acquisisce uno lock esclusivo (vedi - \secref{sec:file_locking}) sul file. Non è disponibile in Linux.\\ + \secref{sec:file_locking}) sul file. Non è disponibile in Linux. \\ \macro{O\_TRUNC} & se il file esiste ed è un file di dati e la modalità di apertura consente la scrittura, allora la sua lunghezza verrà troncata a zero. Se il file è un terminale o una fifo il flag verrà ignorato, negli - altri casi il comportamento non è specificato.\\ + altri casi il comportamento non è specificato. \\ \macro{O\_NOFOLLOW} & se \var{pathname} è un link simbolico la chiamata fallisce. Questa è una estensione BSD aggiunta in Linux dal kernel 2.1.126. Nelle versioni precedenti i link simbolici sono sempre seguiti, e questa - opzione è ignorata.\\ + 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 @@ -309,7 +308,7 @@ comportamento. 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.\\ + essere rappresentate da numeri a 31 bit. \\ \hline \hline % modalità di operazione col file \macro{O\_APPEND} & il file viene aperto in append mode. Prima di ciascuna @@ -327,13 +326,13 @@ comportamento. causava il ritorno da una \func{read} con un valore nullo e non con un errore, questo introduce una 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} è sinonimo di \macro{O\_NONBLOCK}\\ + significato di una end-of-file} è sinonimo di \macro{O\_NONBLOCK}.\\ \macro{O\_ASYNC} & apre il file per l'input/output in modalità asincrona. Non è supportato in Linux. \\ - \macro{O\_FSYNC} & \\ \macro{O\_SYNC} & apre il file per l'input/output sincrono, ogni \func{write} bloccherà fino al completamento della scrittura di tutti dati - sul sull'hardware sottostante\\ + sul sull'hardware sottostante.\\ + \macro{O\_FSYNC} & sinonimo di \macro{O\_SYNC}. \\ \macro{O\_NOATIME} & blocca l'aggiornamento dei tempi dei di accesso dei file (vedi \secref{sec:file_file_times}). In Linux questa opzione non è disponibile per il singolo file ma come opzione per il filesystem in fase @@ -349,7 +348,6 @@ Nelle prime versioni di unix i flag specificabili per \func{open} erano solo quelli relativi alle modalità di accesso del file. Per questo motivo per creare un nuovo file c'era una system call apposita, \func{creat}, il cui prototipo è: - \begin{prototype}{fcntl.h} {int creat(const char *pathname, mode\_t mode)} Crea un nuovo file vuoto, con i permessi specificati da \var{mode}. É del @@ -378,10 +376,10 @@ adesso questa funzione resta solo per compatibilit \section{Funzioni avanzate} \label{sec:file_adv_func} + \subsection{La condivisione dei files} \label{sec:file_sharing} - Si noti che i flag di stato del file, quelli settati dal parametro \var{flag} di \func{open}, essendo tenuti nella vode sulla file table, vengono condivisi, ai file sono però associati anche altri flag, (tenuti invece nella struttura @@ -403,7 +401,3 @@ usato al momento \subsection{La funzione \func{ioctl}} \label{sec:file_ioctl} - - - -