strutture di dati sulla quale essa è basata.
\begin{figure}[htb]
\centering
- \includegraphics[width=14cm]{img/procfile}
+ \includegraphics[width=13cm]{img/procfile}
\caption{Schema della architettura dell'accesso ai file attraverso
l'interfaccia dei \textit{file descriptor}}
\label{fig:file_proc_file}
\begin{prototype}{fcntl.h}
{int creat(const char *pathname, mode\_t mode)}
Crea un nuovo file vuoto, con i permessi specificati da \var{mode}. É del
- tutto equivalente a \func{open(filedes, O\_CREAT|O\_WRONLY|O\_TRUNC, mode)}.
+ tutto equivalente a \code{open(filedes, O\_CREAT|O\_WRONLY|O\_TRUNC, mode)}.
\end{prototype}
\noindent adesso questa funzione resta solo per compatibilità con i vecchi
programmi.
successo e -1 in caso di errore nel qual caso \var{errno} viene settata ad
uno dei valori:
\begin{errlist}
- \item[\macro{ESPIPE}] \var{fd} è una pipe, un socket o una fifo.
- \item[\macro{EINVAL}] \var{whence} non è un valore valido.
+ \item[\macro{ESPIPE}] \param{fd} è una pipe, un socket o una fifo.
+ \item[\macro{EINVAL}] \param{whence} non è un valore valido.
\end{errlist}
ed inoltre \macro{EBADF}.}
\end{functions}
-La nuova posizione è settata usando il valore specificato da \var{offset},
-sommato al riferimento dato da \var{whence}; quest'ultimo può assumere i
+La nuova posizione è settata usando il valore specificato da \param{offset},
+sommato al riferimento dato da \param{whence}; quest'ultimo può assumere i
seguenti valori\footnote{per compatibilità con alcune vecchie notazioni
questi valori possono essere rimpiazzati rispettivamente con 0, 1 e 2 o con
\macro{L\_SET}, \macro{L\_INCR} e \macro{L\_XTND}}:
kernel (cioè \var{f\_pos} in \var{file}, vedi \figref{fig:file_proc_file}).
Dato che la funzione ritorna la nuova posizione, usando il valore zero per
-\func{offset} si può riottenere la posizione corrente nel file chiamando la
-funzione con \func{lseek(fd, 0, SEEK\_CUR}.
+\param{offset} si può riottenere la posizione corrente nel file chiamando la
+funzione con \code{lseek(fd, 0, SEEK\_CUR}.
Si tenga presente inoltre che usare \macro{SEEK\_END} non assicura affatto che
successiva scrittura avvenga alla fine del file, infatti se questo è stato
come vedremo in \secref{sec:sock_io_behav}), o per certi dispositivi, come le
unità a nastro, che restituiscono un singolo blocco di dati alla volta.
-In realtà anche le due condizioni segnalate dagli errori \func{EINTR} e
-\func{EAGAIN} non sono errori. La prima si verifica quando la \func{read} è
+In realtà anche le due condizioni segnalate dagli errori \macro{EINTR} e
+\macro{EAGAIN} non sono errori. La prima si verifica quando la \func{read} è
bloccata in attesa di dati in ingresso e viene interrotta da un segnale; in
tal caso l'azione da prendere è quella di rieseguire la funzione. Torneremo
sull'argomento in \secref{sec:signal_xxx}.
\begin{figure}[htb]
\centering
- \includegraphics[width=14cm]{img/filemultacc}
+ \includegraphics[width=13cm]{img/filemultacc}
\caption{Schema dell'accesso allo stesso file da parte di due processi
diversi}
\label{fig:file_mult_acc}
\begin{figure}[htb]
\centering
- \includegraphics[width=14cm]{img/fileshar}
+ \includegraphics[width=13cm]{img/fileshar}
\caption{Schema dell'accesso ai file da parte di un processo figlio}
\label{fig:file_acc_child}
\end{figure}
nella \textit{file table}.
\begin{figure}[htb]
- \centering \includegraphics[width=14cm]{img/filedup}
+ \centering \includegraphics[width=13cm]{img/filedup}
\caption{Schema dell'accesso ai file duplicati}
\label{fig:file_dup}
\end{figure}
funzione di controllo dei file \func{fnctl} (che esamineremo in
\secref{sec:file_fcntl}) con il parametro \macro{F\_DUPFD}.
-L'operazione ha la sintassi \func{fnctl(oldfd, F\_DUPFD, newfd)} e se si usa 0
+L'operazione ha la sintassi \code{fnctl(oldfd, F\_DUPFD, newfd)} e se si usa 0
come valore per \param{newfd} diventa equivalente a \func{dup}. La sola
differenza, a parte i codici di errore, è che \func{dup2} chiude il nuovo file
se è già aperto mentre \func{fcntl} apre il primo disponibile con un valore
L'uso principale di queste funzioni è per la redirezione dell'input e
dell'output fra l'esecuzione di una \func{fork} e la successiva \func{exec};
diventa così possibile associare un file (o una pipe) allo standard input o
-allo standard output, torneremo su questo uso più avanti quando tratteremo le
-pipe.
+allo standard output, torneremo su questo uso in \secref{sec:ipc_pipes} quando
+tratteremo le pipe.
\subsection{La funzione \func{fcntl}}