+\item il valore della posizione corrente (l'\textit{offset}) nel file.
+\item un puntatore all'inode\footnote{nel kernel 2.4.x si è in realtà passati
+ ad un puntatore ad una struttura \var{dentry} che punta a sua volta
+ all'inode passando per la nuova struttura del VFS} del file.
+%\item un puntatore alla tabella delle funzioni \footnote{la struttura
+% \var{f\_op} descritta in \secref{sec:file_vfs_work}} che si possono usare
+% sul file.
+\end{itemize*}
+
+In \figref{fig:file_proc_file} si è riportato uno schema in cui è illustrata
+questa architettura, in cui si sono evidenziate le interrelazioni fra le varie
+strutture di dati sulla quale essa è basata.
+\begin{figure}[htb]
+ \centering
+ \includegraphics[width=14cm]{img/procfile.eps}
+ \caption{Schema della architettura dell'accesso ai file attraverso
+ l'interfaccia dei \textit{file descroptor}}
+ \label{fig:file_proc_file}
+\end{figure}
+Ritorneremo su questo schema più volte, dato che esso è fondamentale per
+capire i dettagli del funzionamento delle dell'interfaccia dei \textit{file
+ descriptor}.
+
+
+\subsection{I file standard}
+\label{sec:file_std_descr}
+
+Come accennato i \textit{file descriptor} non sono altro che un indice nella
+tabella dei file aperti di ciascun processo; per questo motivo essi vengono
+assegnati in successione tutte le volte che si apre un nuovo file (se non se
+ne è chiuso nessuno in precedenza).
+
+In tutti i sistemi unix-like esiste una convenzione generale per cui ogni
+processo viene lanciato con almeno tre file aperti. Questi, per quanto
+dicevamo prima, avranno come \textit{file descriptor} i valori 0, 1 e 2.
+Benché questa sia soltanto una convenzione, essa è seguita dalla gran parte
+delle applicazioni, e non aderirvi potrebbe portare a gravi problemi di
+interoperabilità.
+
+Il primo file è sempre associato a quello che viene chiamato \textit{standard
+ input}, è cioè il file da cui il processo si aspetta di ricevere i dati in
+ingresso (nel caso della shell, è associato alla lettura della tastiera); il
+secondo file è il cosiddetto \textit{standard output}, cioè il file su cui ci
+si aspetta debbano essere inviati i dati in uscita (sempre nel caso della
+shell, è il terminale su cui si sta scrivendo), il terzo è lo \textit{standard
+ error}, su cui viene inviato l'output relativo agli errori.
+
+Lo standard POSIX.1 provvede tre costanti simboliche, definite nell'header
+\file{unistd.h}, al posto di questi valori numerici:
+\begin{table}[htb]
+ \centering
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Costante} & \textbf{Significato} \\
+ \hline
+ \hline
+ \macro{STDIN\_FILENO} & \textit{file descriptor} dello \textit{standard
+ input} \\
+ \macro{STDOUT\_FILENO} & \textit{file descriptor} dello \textit{standard
+ output} \\
+ \macro{STDERR\_FILENO} & \textit{file descriptor} dello \textit{standard
+ error}\\
+ \hline
+ \end{tabular}
+ \caption{Costanti definite in \file{unistd.h} per i file standard aperti
+ alla creazione di ogni processo.}
+ \label{tab:file_std_files}
+\end{table}
+
+In \curfig\ si è utilizzata questa situazione come esempio, facendo
+riferimento ad un programma in cui lo \textit{standard input} è associato ad
+un file mentre lo \textit{standard output} e lo \textit{standard error} sono
+entrambi associati ad un altro file (e quindi utilizzano lo stesso inode).
+
+Nelle vecchie versioni di unix (ed anche in Linux fino al kernel 2.0.x) il
+numero di file aperti era anche soggetto ad un limite massimo dato dalle
+dimensioni del vettore di puntatori con cui era realizzata la tabella dei file
+descriptor dentro \var{file\_struct}; questo limite intrinseco non sussiste
+più, dato che si è passati ad una linked list, restano i limiti imposti
+dall'amministratore (vedi \secref{sec:sys_limits}).