From: Simone Piccardi Date: Mon, 11 Jun 2001 16:26:14 +0000 (+0000) Subject: Iniziato a scrivere la roba di stat X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=commitdiff_plain;h=0e9402ecfdb1d1c387b7d53ab8dfb153a735c453 Iniziato a scrivere la roba di stat --- diff --git a/filedir.tex b/filedir.tex index 8f64ac0..b16e2dc 100644 --- a/filedir.tex +++ b/filedir.tex @@ -3,16 +3,12 @@ In questo capitolo tratteremo in dettaglio le varie caratteristiche di files e directories, ed in particolare approfondiremo i dettagli su come è organizzata -la struttura dei files in un sistema unix; esamineremo poi come è strutturato -il sistema base di protezioni e controllo di accesso ai files, e tutta +la struttura dei files in un sistema unix, esamineremo come è strutturato il +sistema base di protezioni e controllo di accesso ai files, e tutta l'interfaccia che permette la manipolazione dei vari attributi di files e directories. Tutto quello che riguarda invece la manipolazione dei contenuti è lasciato ai capitoli successivi. -Le funzioni che esamineremo in questo capitolo pertanto sono quelle che -permettono di creare e cancellare o leggere le directories, rinominare o -cancellare i files ed esaminare o cambiare i loro attributi. - \section{L'organizzazione di files e directories} \label{sec:filedir_org} @@ -356,7 +352,8 @@ nuovo nome dopo che il vecchio \item \texttt{ENOENT} Uno dei componenti del pathname non esiste o è un link simbolico spezzato. \item \texttt{ENOTDIR} Uno dei componenti del pathname non è una directory. - \item \texttt{ENOMEM} Memoria insufficiente nel kernel. + \item \texttt{ENOMEM} il kernel non ha a disposizione memoria sufficiente a + completare l'operazione. \item \texttt{ELOOP} Ci sono troppi link simbolici nella risoluzione del pathname. \item \texttt{EISDIR} @@ -430,7 +427,6 @@ questa funzione \texttt{buff} di dimensione \texttt{size}. Non chiude la stringa con un carattere nullo e la tronca a \texttt{size} nel caso il buffer sia troppo piccolo per contenerla. - La funzione restituisce il numero di caratteri letti dentro \texttt{buff} o -1 per un errore, in caso di errore. La variabile \texttt{errno} viene @@ -448,6 +444,57 @@ questa funzione \end{prototype} +\section{La manipolazione delle caratteristiche dei files} +\label{sec:filedir_infos} + +Come spiegato in \secref{sec:filedir_file_handling} tutte le informazioni +generali relative alle caratteristiche di ciascun file sono mantenute +nell'inode. Vedremo in questa sezione come sia possibile accedervi usando la +funzione \texttt{stat} ed esamineremo alcune funzioni utilizzabili per +manipolare una parte di questa informazione. Tutto quello che invece riguarda +il meccanismo di controllo di accesso ad i file e le relative funzioni di +manipolazione sarà invece esaminanto in \secref{sec:filedir_access_control}. + + +\subsection{Le funzioni \texttt{stat}, \texttt{fstat} e \texttt{lstat}} +\label{sec:filedir_stat} + +La lettura delle informazioni relative ai file è fatta attraverso la famiglia +delle funzioni \texttt{stat}, questa è la funzione che il comando \texttt{ls} +usa per poter stampare tutti i dati dei files; il prototipo della funzione è +il seguente; +\begin{prototype}{sys/stat.h} +{int stat(const char *file_name, struct stat *buf)} + + La funzione restituisce zero in caso di successo e -1 per un errore, in caso + di errore \texttt{errno} viene settato ai valori: + \begin{errlist} + \item \texttt{EACCESS} Non c'è il permesso di accedere al file. + \item \texttt{ENOTDIR} Una componente del pathname non è una directory. + \item \texttt{EMLOOP} Ci sono troppi link simbolici nel pathname. + \item \texttt{EFAULT} I puntatori usati sono fuori dallo spazio di indirizzi + del processo. + \item \texttt{ENOMEM} il kernel non ha a disposizione memoria sufficiente a + completare l'operazione. + \item \texttt{ENAMETOOLONG} Il filename è troppo lungo. + \end{errlist} +\end{prototype} + +\subsection{I tipi di file} +\label{sec:filedir_file_types} + +\subsection{La dimensione dei file} +\label{sec:filedir_file_size} + +\subsection{I tempi dei file} +\label{sec:filedir_file_times} + +\subsection{La funzione \texttt{utime}} +\label{sec:filedir_utime} + + + + \section{Il controllo di accesso ai file} \label{sec:filedir_access_control} @@ -474,7 +521,6 @@ questa funzione \label{sec:filedir_chown} - \section{La manipolazione delle directories} \label{sec:filedir_dir_handling} @@ -610,26 +656,6 @@ per cambiare directory di lavoro. \end{prototype} -\section{La manipolazione delle caratteristiche dei files} -\label{sec:filedir_infos} - - -\subsection{Le funzioni \texttt{stat}, \texttt{fstat} e \texttt{lstat}} -\label{sec:filedir_stat} - -\subsection{I tipi di file} -\label{sec:filedir_file_types} - -\subsection{La dimensione dei file} -\label{sec:filedir_file_size} - -\subsection{I tempi dei file} -\label{sec:filedir_file_times} - -\subsection{La funzione \texttt{utime}} -\label{sec:filedir_utime} - - %La struttura fondamentale che contiene i dati essenziali relativi ai file è il