X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=7bfaae149f13e60739f7b01c204dac9a5cd76992;hp=084f783b64f561fb0f5928646d3fd508a60f5be8;hb=ee350fdc6822ea17657d0e1598faa3e56c8d6e9b;hpb=9bb8146d97c05e1be51c66fcf94aec2ede1f5971 diff --git a/fileadv.tex b/fileadv.tex index 084f783..7bfaae1 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -1578,11 +1578,11 @@ chiudere un file descriptor per cancellare tutti i lock realtivi al file cui 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}. @@ -1604,6 +1604,34 @@ semplificata grazie alla funzione \func{lockf}, il cui prototipo 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}