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
 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à
 
 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)}
   
 
 \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}
 
  
 \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}
 
 
 \section{L'input/output di basso livello}