Altra roba sulle directory
authorSimone Piccardi <piccardi@gnulinux.it>
Sat, 17 Mar 2001 17:12:27 +0000 (17:12 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sat, 17 Mar 2001 17:12:27 +0000 (17:12 +0000)
files.tex

index 8a1af4dcb38e703eac18004aef01ee7cc0d017c5..4f5e304ab8b16e2a7540cbc26ee72f3b6cf74572 100644 (file)
--- 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}