From: Simone Piccardi Date: Mon, 9 Jul 2001 20:23:55 +0000 (+0000) Subject: Iniziato a sistemare il secondo capitolo sui file X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=618bcb85e9e50d96cb4c97b7d61ab2bf4ac89c11 Iniziato a sistemare il secondo capitolo sui file --- diff --git a/filedir.tex b/filedir.tex index 361e05a..1183d06 100644 --- a/filedir.tex +++ b/filedir.tex @@ -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}