+La funzione \func{open} è la funzione fondamentale per accedere ai file, ed è
+quella che crea l'associazione fra un pathname ed un file descriptor; il suo
+prototipo è:
+
+\begin{functions}
+ \headdecl{sys/types.h}
+ \headdecl{sys/stat.h}
+ \headdecl{fcntl.h}
+ \funcdecl{int open(const char *pathname, int flags)}
+ \funcdecl{int open(const char *pathname, int flags, mode\_t mode)}
+ Apre il file indicato da \var{pathname} nella modalità indicata da
+ \var{flags}, e, nel caso il file sia creato, con gli eventuali permessi
+ specificati da \var{mode}.
+
+ La funzione ritorna il file descriptor in caso di successo e -1 in caso di
+ errore. In questo caso la variabile \var{errno} viene settata ad uno dei
+ valori:
+
+ \begin{errlist}
+ \item \macro{EEXIST} \var{pathname} esiste e si è specificato
+ \macro{O\_CREAT} e \macro{O\_EXCL}.
+ \item \macro{EISDIR} \var{pathname} indica una directory e si è tentato
+ l'accesso in scrittura.
+ \item \macro{ENOTDIR} si è specificato \macro{O\_DIRECTORY} e \var{pathname}
+ non è una directory.
+ \item \macro{ENXIO} si sono settati \macro{O\_NOBLOCK} o \macro{O\_WRONLY}
+ ed il file è una fifo che non viene letta da nessun processo o
+ \var{pathname} è un file di dispositivo ma il dispositivo è assente.
+ \item \macro{ENODEV} \var{pathname} si riferisce a un file di dispositivo
+ che non esiste.
+ \item \macro{ETXTBSY} si è cercato di accedere in scrittura all'immagine di
+ un programma in esecuzione.
+ \item \macro{ELOOP} si sono incotrati troppi link simbolici nel risolvere
+ pathname o si è indicato \macro{O\_NOFOLLOW} e \var{pathname} è un link
+ simbolico.
+ \end{errlist}
+ ed inoltre \macro{EACCES}, \macro{ENAMETOOLONG}, \macro{ENOENT},
+ \macro{EROFS}, \macro{EFAULT}, \macro{ENOSPC}, \macro{ENOMEM},
+ \macro{EMFILE} e \macro{ENFILE}.
+\end{functions}
+
+La funzione apre il file, usando il primo file descriptor libero, e crea
+l'opportuna voce (cioè la struttura \var{file}) nella file table. Il file non
+è condiviso con nessun altro processo, torneremo in \secref{sec:file_sharing}
+sulla condivisione, che si ha ad esempio quando viene eseguita una
+\func{fork}, come accennato in \secref{sec:proc_fork}. Il nuovo file
+descriptor è settato per restare aperto attraverso una \func{exec} (come
+accennato in \secref{sec:proc_exec}) ed il suo offset è settato all'inizion
+del file.
+
+I valori specificati con \var{flag} costituiscono lo stato del file
+
+