+senso aprirle come fossero dei file di dati; per questo solo il kernel può
+scrivere direttamente il contenuto di una directory (onde evitare
+inconsistenze all'interno del filesystem), mentre i processi devono creare i
+file usando le apposite funzioni. Può però essere utile potere leggere il
+contenuto di una directory, ad esempio per fare la lista dei file che contiene
+o per delle ricerche.
+
+Per far questo nello standard POSIX\footnote{le funzioni sono previste pure in
+ BSD e SVID.} ha introdotto i cosiddetti \textit{directory streams} (chiamati
+così per l'analogia con i file stream di \capref{cha:files_std_interface}) ed
+alcune di funzioni per la loro gestione. La prima di queste è \funcd{opendir},
+che apre uno di questi stream, il suo prototipo è:
+\begin{functions}
+ \headdecl{sys/types.h} \headdecl{dirent.h}
+
+ \funcdecl{DIR * opendir(const char *dirname)}
+
+ Apre un \textit{directory stream}.
+
+ \bodydesc{La funzione restituisce un puntatore al \textit{directory stream}
+ in caso di successo e \val{NULL} per un errore, nel qual caso \var{errno}
+ assumerà i valori \errval{EACCES}, \errval{EMFILE}, \errval{ENFILE},
+ \errval{ENOENT}, \errval{ENOMEM} e \errval{ENOTDIR}.}
+\end{functions}
+
+La funzione apre un \textit{directory stream} per la directory
+\param{dirname}, ritornando il puntatore alla relativa struttura \ctyp{DIR} da
+usare per le successive operazioni, si posiziona inoltre sulla prima voce
+della directory.
+
+Dato che le directory sono comunque dei file, in alcuni casi può essere utile
+conoscere il file descriptor sottostante un \textit{directory stream}, ad
+esempio per utilizzarlo con la funzione \func{fchdir} per cambiare la
+directory di lavoro (vedi \secref{sec:file_work_dir}) a quella relativa allo
+stream che si è aperto. A questo scopo si può usare la funzione \funcd{dirfd},
+il cui prototipo è:
+\begin{functions}
+ \headdecl{sys/types.h} \headdecl{dirent.h}
+
+ \funcdecl{int dirfd(DIR * dir)}
+
+ Restituisce il file descriptor associato ad un \textit{directory stream}.
+
+ \bodydesc{La funzione restituisce il file descriptor (un valore positivo) in
+ caso di successo e -1 in caso di errore.}
+\end{functions}