Iniziato a sistemare il secondo capitolo sui file
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 9 Jul 2001 20:23:55 +0000 (20:23 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 9 Jul 2001 20:23:55 +0000 (20:23 +0000)
filedir.tex

index 361e05a5afbcf9fffca3288cefe625b79ed41e48..1183d0696f34419062c076b49c8c4e92e9e00f65 100644 (file)
@@ -475,10 +475,10 @@ i seguenti:
   
   \funcdecl{int lstat(const char *file\_name, struct stat *buf)} Identica a
   \func{stat} eccetto che se il \var{file\_name} è un link simbolico vengono
-  lette le informazioni relativa ad esso e non al file a cui punta.
+  lette le informazioni relativa ad esso e non al file a cui fa riferimento.
   
   \funcdecl{int fstat(int filedes, struct stat *buf)} Identica a \func{stat}
-  eccetto che funziona con un file aperto, specificato tramite il suo file
+  eccetto che si usa con un file aperto, specificato tramite il suo file
   descriptor \var{filedes}.
   
   Le funzioni restituiscono zero in caso di successo e -1 per un errore, in
@@ -567,8 +567,9 @@ simbolici e socket definite da BDS, l'elenco 
 \end{table}
 
 Oltre a queste macro è possibile usare direttamente il valore di
-\var{st\_mode} per ricavare il significato dei vari bit del campo attraverso
-l'uso dei flag riportati in \ntab:
+\var{st\_mode} per ricavare il significato dei vari bit in esso memorizzati,
+per questo sempre in \texttt{sys/stat.h} sono definiti i flag riportati in
+\ntab:
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -608,10 +609,37 @@ l'uso dei flag riportati in \ntab:
   \label{tab:filedir_file_mode_flags}
 \end{table}
 
+Il primo valore definisce la maschera dei bit usati nei quali viene
+memorizzato il tipo di files, mentre gli altri possono essere usati per
+effettuare delle selezioni sul tipo di file voluto.
+
 \subsection{La dimensione dei file}
 \label{sec:filedir_file_size}
 
-Il membro \var{st\_size} contiene la dimensione del 
+Il membro \var{st\_size} contiene la dimensione del file in bytes (se il file
+è un file normale, nel caso di un link simbolico al dimensione è quella del
+pathname che contiene, per le directory è in genere un multiplo di 512). 
+
+Il campo \var{st\_blocks} definisce la lunghezza del file in blocchi di 512
+bytes. Il campo \var{st\_blksize} infine definisce la dimensione preferita per
+i trasferimenti sui file (che è la dimensione usata anche dalle librerie del C
+per l'interfaccia deglli stream); scrivere in blocchi di dimensione inferiore
+sarebbe inefficiente.
+
+Si tenga conto che lunghezza del file riportata in \var{st\_size} non è detto
+che corrisponda all'occupazione dello spazio su disco per via della possibile
+esistenza dei cosiddetti \textsl{buchi} (detti normalmente \textit{holes}) che
+si formano tutte le volte che si va a scrivere su un file dopo aver eseguito
+una \func{seek} (vedi \secref{sec:fileunix_lseek}) oltre la sua conclusione
+corrente.
+
+In tal caso si avranno differenti risultati a seconda del modi in cui si
+calcola la lunghezza del file, ad esempio il comando \cmd{du}, (che riporta il
+numero di blocchi occupati) potrà dare una dimensione inferiore, mentre se si
+legge dal file (ad esempio usando \cmd{wc -c}), dato che in tal caso per le
+parti non scritte vengono restituiti degli zeri, si avrà lo stesso risultato
+di \cmd{ls}.
+
 
 \subsection{I tempi dei file}
 \label{sec:filedir_file_times}
@@ -672,6 +700,11 @@ pertanto accesso senza restrizione a qualunque file del sistema.
 \subsection{I flag \texttt{suid} e \texttt{sgid}}
 \label{sec:filedir_suid_sgid}
 
+
+
+
+
+
 \subsection{La titolarità di nuovi files e directory}
 \label{sec:filedir_ownership}