\var{file}; in ciascuna di esse sono tenute varie informazioni relative al
file, fra cui:
\begin{itemize*}
-\item lo stato del file (lettura, scrittura, append, etc.).
+\item lo stato del file (nel campo \var{f\_flags}).
\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
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
+ \footnotesize
\begin{tabular}[c]{|l|l|}
\hline
\textbf{Costante} & \textbf{Significato} \\
chiudere un file.
La gran parte delle operazioni sui file si effettua attraverso queste cinque
-funzioni, esse vengono chiamate anche funzioni di I/O non bufferizzato, per
-contrapporle alle analoghe previste dallo standard ANSI C (che vedremo in
-\secref{sec:file_ansi_base_func}), dato che effettuano le operazioni di lettura
-e scrittura usando direttamente le system call del kernel.
+funzioni, esse vengono chiamate anche funzioni di I/O non bufferizzato dato
+che effettuano le operazioni di lettura e scrittura usando direttamente le
+system call del kernel.
\subsection{La funzione \func{open}}
\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} un componente di \var{pathname} non è una directory o
- si è specificato \macro{O\_DIRECTORY} e \var{pathname} non è una
- directory.
+ \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.
\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
\subsection{La funzione \func{creat}}