esso faceva riferimento, anche se questi fossero stati creati usando altri
file descriptor che restano aperti.
-Come abbiamo visto come l'interfaccia POSIX per il file locking sia molto più
+Abbiamo visto come l'interfaccia POSIX per il file locking sia molto più
potente e flessibile di quella di BSD, ma è anche molto più complicata da
-usare, specie in tutti quei casi in cui non si vogliono bloccare sezioni
-separate di file. Per questo, seguendo System V, è disponibile una interfaccia
-semplificata grazie alla funzione \func{lockf}, il cui prototipo è:
+usare. Per questo motivo è disponibile anche una interfaccia semplificata
+(ripresa da System V) che utilizza la funzione \func{lockf}, il cui prototipo
+è:
\begin{prototype}{sys/file.h}{int lockf(int fd, int cmd, off\_t len)}
Applica, controlla o rimuove un \textit{file lock} sul file \param{fd}.
Il comportamento della funzione dipende dal valore dell'argomento \param{cmd}
che specifica quale azione eseguire; i valori possibili sono riportati in
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Valore} & \textbf{Significato} \\
+ \hline
+ \hline
+ \macro{F\_LOCK} & Richiede un \textit{exclusive lock}. Se non può essere
+ ottenuto a causa di un lock preesistente la funzione
+ blocca il processo chiamante fino al rilascio di
+ quest'ultimo. \\
+ \macro{F\_TLOCK}& Stesso comportamento di \macro{F\_LOCK} ma la funzione
+ ritorna sempre subito, segnalando un errore quando il
+ lock non può essere acquisito. \\
+ \macro{F\_ULOCK}& Sblocca il file.\\
+ \macro{F\_TEST} & Controlla il lock, la funzione restituisce 0 se il file
+ non ha lock, o i lock appartengono al processo corrente,
+ e -1, con un errore di \macro{EACCES}, se altri processi
+ detengono un lock sul file.\\
+ \hline
+ \end{tabular}
+ \caption{Valori possibili per il campo \var{l\_type} di \func{flock}.}
+ \label{tab:file_flock_type}
+\end{table}
+
+
+
\subsection{Il \textit{mandatory locking}}
\label{sec:file_mand_locking}