From 1abc33a524903f921d75267b1e997d8920ad7716 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Sat, 17 Mar 2001 17:12:27 +0000 Subject: [PATCH] Altra roba sulle directory --- files.tex | 58 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/files.tex b/files.tex index 8a1af4d..4f5e304 100644 --- a/files.tex +++ b/files.tex @@ -327,8 +327,7 @@ sistemi POSIX uno degli attributi di un file aperto file, cioè il punto nel file in cui verrebbe letto o scritto alla operazione successiva. Essa è rappresentata da un numero intero che indica il numero di bytes dall'inizio del file, che viene (a meno che non si apra il file in -append) inizializzato a zero all'apertura del medesimo. - +append) inizializzato a zero all'apertura del medesimo. Questo è uno dei dati che viene mantenuto nella suddetta struttura, per cui ogni processo avrà la sua posizione corrente nel file, che non sarà @@ -469,14 +468,59 @@ funzione \item \texttt{int chdir (const char * pathname)} - Come dice il nome (che significa \textit{change directory}, come l'omonimo - comando di shell) questa funzione serve a cambiare la directory di lavoro a - quella speficata dal pathname contenuto nella stringa \texttt{pathname}. - - La funzione restituisce zero in caso di successo e -1 per un errore, + Come dice il nome (che significa \textit{change directory}) questa funzione + serve a cambiare la directory di lavoro a quella speficata dal pathname + contenuto nella stringa \texttt{pathname}. + + La funzione restituisce zero in caso di successo e -1 per un errore, in caso + di errore \texttt{errno} viene settata secondo i codici di errore standard + di accesso ai files (trattati in dettaglio in \ref{sec:file_err_acc}) ai + quali si aggiunge il codice \texttt{ENOTDIR} nel caso il \texttt{filename} + indichi un file che non sia una directory. \end{itemize} +\subsection{Creazione di una directory} + +Per creare una nuova directory si può usare la seguente funzione, omonima +dell'analogo comando di shell \texttt{mkdir}. + + +\begin{itemize} +\item \texttt{char * mkdir (const char * dirname, mode_t mode)} + + Questa funzione crea una nuova directory vuota con il nome indicato da + \texttt{dirname}, assegnandole i permessi indicati da \texttt{mode}. Il nome + può essere indicato con il pathname assoluto o relativo. + + La funzione restituisce zero in caso di successo e -1 per un errore, in caso + di errore \texttt{errno} viene settata secondo i codici di errore standard + di accesso ai files (trattati in dettaglio in \ref{sec:file_err_acc}) ai + quali si aggiungono i seguenti: + \begin{itemize} + \item \texttt{EACCESS} + Non c'è il permesso di scrittura per la directory in cui si vuole inserire + la nuova directory. + \item \texttt{EEXIST} Un file (o una directory) con quel nome essite di già + \item \texttt{EMLINK} La directory in cui si vuole creare la nuova directory + contiene troppi file. Sotto linux questo normalmente non avviene perchè il + filesystem standard consente la creazione di un numero di file maggiore di + quelli che possono essere contenuti nell'hard-disk, ma potendo avere a che + fare anche con filesystem di altri sistemi questo errore può presentarsi + \item \texttt{ENOSPC} Non c'è abbastanza spazio sul file system per creare + la nuova directory. + \item \texttt{EROFS} La directory su cui si vuole inserire la nuova + directory è su un filesystem monto readonly. + \end{itemize} +\end{itemize} + + +\subsection{Accesso alle directory} + +Benchè le directory siano oggetti del filesystem come tutti gli altri non ha +ovviamente senso aprirle come fossero dei file di dati. Può però essere utile +poterne leggere il contenuto ad esempio per fare la lista dei file che esse +contengono o ricerche sui medesimi. \section{L'input/output di basso livello} -- 2.30.2