\chapter{I files: l'interfaccia I/O di unix}
\label{cha:file_unix_interface}


Esamineremo in questo capitolo la prima delle due interfacce di programmazione
per i file, quella dei file descriptor, nativa di unix.


\section{I file descriptors}
\label{sec:file_fd}


Per poter accedere al contenuto dei file occorre anzitutto aprirlo. Questo
crea un canale di comunicazione che permette di eseguire una serie di
operazioni. Una volta terminate le operazioni, il file dovrà essere chiuso, e
questo chiuderà il canale di comunicazione impedendo ogni ulteriore
operazione.

\section{Le funzioni base}
\label{sec:file_base_func}

L'interfaccia standard unix per l'input/output sui file è su cinque funzioni
\texttt{open}, \texttt{read}, \texttt{write}, \texttt{lseek}, \texttt{close}


\subsection{La funzione \texttt{open}}
\label{sec:file_open}

\subsection{La funzione \texttt{creat}}
\label{sec:file_creat}

\subsection{La funzione \texttt{close}}
\label{sec:file_close}

\subsection{La funzione \texttt{lseek}}
\label{sec:file_lseek}

\subsection{La funzione \texttt{read}}
\label{sec:file_read}

\subsection{La funzione \texttt{write}}
\label{sec:file_write}

\section{La condivisione dei files}
\label{sec:file_sharing}


\subsection{Operazioni atomiche}
\label{sec:file_atomic}

\section{Funzioni avanzate}
\label{sec:file_adv_func}

\subsection{La funzioni \texttt{dup} e \texttt{dup2}}
\label{sec:file_dup}

\subsection{La funzione \texttt{fcntl}}
\label{sec:file_fcntl}

\subsection{La funzione \texttt{ioctl}}
\label{sec:file_ioctl}




