+La funzione apre il file, usando il primo file descriptor libero, e crea
+l'opportuna voce (cioè la struttura \var{file}) nella file table. Viene usato
+sempre il file descriptor con il valore più basso, questa caratteritica
+permette di prevedere qual'è il valore che si otterrà e viene talvolta usata
+da alcune applicazioni per sostituire i file corrispondenti ai file standard
+di \secref{sec:file_std_descr}: se ad esempio si chiude lo standard input e si
+apre subito dopo un nuovo file questo diventerà il nuovo standard input (avrà
+cioè il file descriptor 0).
+
+Il nuovo file descriptor non è condiviso con nessun altro processo, (torneremo
+sulla condivisione dei file, in genere accessibile dopo una \func{fork}, in
+\secref{sec:file_sharing}). Il nuovo file descriptor è settato di default per
+restare aperto attraverso una \func{exec} (come accennato in
+\secref{sec:proc_exec}) ed l'offset è settato all'inizio del file.
+
+La funzione prevede diverse modalità di apertura di un file, che vengono
+specificate dal parametro \var{flags}, questo parametro viene settato come
+maschera binaria attraverso OR aritmetico delle costanti che identificano i
+vari flag. Questi ultimi sono poi divisibili in tre categorie principali:
+\begin{itemize}
+\item \textsl{le modalità di accesso}, che specificano con quale modalità si
+ accede al file: lettura, scrittura o lettura/scrittura. Uno di questi
+ valori deve essere sempre specificato, vengono settati alla chiamata da
+ \func{open}, e possono essere riletti con una \func{fcntl}, ma non
+ modificati.
+\item \textsl{le modalità di apertura}, che permettono di specificare alcuni
+ dei modi di funzionamento di \func{open}. Hanno effetto solo al momento
+ della chiamata e non sono memorizzati nè possono essere riletti.
+\item \textsl{le modalità di operazione}, che permettono di specificare alcuni
+ effetti del comportamento delle operazioni sul file (come la \func{read} o
+ la \func{write}). Sono settati alla chiamata da \func{open}, ma possono
+ essere riletti e modificati con una una \func{fcntl}.
+\end{itemize}
+
+In \ntab\ si sono riportate, come definite in \file{fcntl.h}, le costanti che
+identificano i vari flag di stato (ed i relativi valori numerici), da usare
+per specificare il valore di \var{flags}, alcuni di questi poi andranno a
+costituire lo stato del file (il cosiddetto \textit{file status flag}), tenuto
+nel campo \var{f\_flags} di \var{file}.