Esempi di server con le message queue
[gapil.git] / fileadv.tex
index 084f783b64f561fb0f5928646d3fd508a60f5be8..7bfaae149f13e60739f7b01c204dac9a5cd76992 100644 (file)
@@ -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.
 
 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
 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}.
 \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 
 
 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}
 
 \subsection{Il \textit{mandatory locking}}
 \label{sec:file_mand_locking}