prototipo è:
\begin{prototype}{sys/file.h}{int flock(int fd, int operation)}
- Applica o rimuove un blocco sul file \param{fd}.
+ Applica o rimuove un \textit{file lock} sul file \param{fd}.
\bodydesc{La funzione restituisce 0 in caso di successo, e -1 in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
}
\end{prototype}
-Il comportamento della funzione è specificato dal valore di \param{operation},
-che è espresso come maschera binaria,
+Il comportamento della funzione è specificato dal valore dell'argomento
+\param{operation}, da passare come maschera binaria dei valori riportati in
+\tabref{tab:file_flock_operation}.
+
+\begin{table}[htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|}
+ \hline
+ \textbf{Valore} & \textbf{Significato} \\
+ \hline
+ \hline
+ \macro{LOCK\_SH} & Asserisce uno \textit{shared lock} (blocco
+ condiviso) sul file. Un blocco condiviso può essere
+ mantenuto da più processi contemporaneamente.\\
+ \macro{LOCK\_EX} & Asserisce un \textit{esclusive lock} (blocco
+ esclusivo) sul file. Un blocco esclusivo può essere
+ mantenuto da un solo processo alla volta.\\
+ \macro{LOCK\_UN} & Sblocca il file.\\
+ \macro{LOCK\_NB} & Impedisce che la funzione si blocchi nella
+ richiesta di un \textit{file lock}.\\
+ \hline
+ \end{tabular}
+ \caption{Valori dell'argomento \param{operation} di \func{flock}.}
+ \label{tab:file_flock_operation}
+\end{table}
+
+
+Si tenga conto che la funzione non è in grado di eseguire un blocco su NFS, in
+tal caso occorre usare \func{fcntl} che funziona anche attraverso NFS, posto
+che il server supporti il \textit{file locking}.