X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileunix.tex;h=d5221ca500ea6330369c59035836f2e36d9b3b62;hp=df4bfb9f51b00d19498ca60abd8ed6c4c91a8274;hb=8f0ff8d62835c0dc1be10ade261dba276959fc4a;hpb=7b63698a1ef54d7274e2c14065d62260644abde0 diff --git a/fileunix.tex b/fileunix.tex index df4bfb9..d5221ca 100644 --- a/fileunix.tex +++ b/fileunix.tex @@ -832,9 +832,13 @@ kernel. La funzione viene usata dal comando \cmd{sync} quando si vuole forzare esplicitamente lo scarico dei dati su disco, o dal demone di sistema \cmd{update} che esegue lo scarico dei dati ad intervalli di tempo fissi: il -valore tradizionale per l'update dei dati è ogni 30 secondi, ma in Linux era -di 5 secondi; con le nuove versioni poi, è il kernel che si occupa -direttamente di tutto quanto. +valore tradizionale, usato da BSD, per l'update dei dati è ogni 30 secondi, ma +in Linux il valore utilizzato è di 5 secondi; con le nuove versioni\footnote{a + partire dal kernel 2.2.8} poi, è il kernel che si occupa direttamente di +tutto quanto attraverso il demone interno \cmd{bdflush}, il cui comportamento +può essere controllato attraverso il file \file{/proc/sys/vm/bdflush} (per il +significato dei valori si può leggere la documentazione allegata al kernel in +\file{Documentation/sysctl/vm.txt}). Quando si vogliono scaricare soltanto i dati di un file (ad esempio essere sicuri che i dati di un database sono stati registrati su disco) si possono @@ -857,8 +861,10 @@ usare le due funzioni \func{fsync} e \func{fdatasync}, i cui prototipi sono: Entrambe le funzioni forzano la sincronizzazione col disco di tutti i dati del file specificato, ed attendono fino alla conclusione delle operazioni; -\func{fsync} forza anche la sincronizzazione dei metadata dell'inode (i dati -di \var{fstat} come i tempi del file). +\func{fsync} forza anche la sincronizzazione dei metadati del file (che +riguardano sia le modifiche alle tabelle di allocazione dei settori, che gli +altri dati contenuti nell'inode che si leggono con \var{fstat} come i tempi +del file). Si tenga presente che questo non comporta la sincronizzazione della directory che contiene il file (e scrittura della relativa voce su @@ -912,8 +918,9 @@ sull'altro (dato che quello che viene modificato della \textit{file table} a cui entrambi fanno riferimento). L'unica differenza fra due file descriptor duplicati è che ciascuno avrà il suo \textit{file descriptor flag}; a questo proposito va specificato che nel caso -di \func{dup} il flag di \textit{close on exec} viene sempre cancellato nella -copia. +di \func{dup} il flag di \textit{close-on-exec}\index{close-on-exec} (vedi +\secref{sec:proc_exec} e \secref{sec:file_fcntl}) viene sempre cancellato +nella copia. L'uso principale di questa funzione è per la redirezione dell'input e dell'output fra l'esecuzione di una \func{fork} e la successiva \func{exec}; @@ -993,10 +1000,11 @@ 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. -\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\_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}\index{close-on-exec}, identificato dalla costante + \macro{FD\_CLOEXEC}, che serve a richiedere che il file venga chiuso nella + esecuzione di una \func{exec} (vedi \secref{sec:proc_exec}). \item[\macro{F\_GETFD}] ritorna il valore del \textit{file descriptor flag} di \var{fd}, se \macro{FD\_CLOEXEC} è impostato i file descriptor aperti vengono chiusi attraverso una \func{exec} altrimenti (il comportamento