X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=d03ec210ce7a60acba0eaad58e190442012adb34;hp=8b979cb3780e0ebae471a271497d36bc3d67db62;hb=8fad76a42d4fdf71d9a90d425a70af66827fbf9e;hpb=3495ff8ace2c28b15ecfaece54cbda983974869b diff --git a/fileadv.tex b/fileadv.tex index 8b979cb..d03ec21 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -94,8 +94,8 @@ In Linux sono disponibili due interfacce per utilizzare l'\textit{advisory \func{flock}, la seconda è quella recepita dallo standard POSIX.1 (che è derivata dall'interfaccia usata in System V), che è basata sulla funzione \func{fcntl}. I \textit{file lock} sono implementati in maniera completamente -indipendente nelle due interfacce,\footnote{in realtà con Linux questo avviene - solo dalla serie 2.0 dei kernel.} che pertanto possono coesistere senza +indipendente nelle due interfacce (in realtà con Linux questo avviene solo +dalla serie 2.0 dei kernel) che pertanto possono coesistere senza interferenze. Entrambe le interfacce prevedono la stessa procedura di funzionamento: si @@ -151,18 +151,21 @@ La prima interfaccia per il \textit{file locking}, quella derivata da BSD, permette di eseguire un blocco solo su un intero file; la funzione usata per richiedere e rimuovere un \textit{file lock} è \funcd{flock}, ed il suo prototipo è: -\begin{prototype}{sys/file.h}{int flock(int fd, int operation)} - - 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: - \begin{errlist} + +\begin{funcproto}{ +\fhead{sys/file.h} +\fdecl{int flock(int fd, int operation)} +\fdesc{Applica o rimuove un \textit{file lock}.} +} + +{La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual + caso \var{errno} assumerà uno dei valori: + \begin{errlist} \item[\errcode{EWOULDBLOCK}] il file ha già un blocco attivo, e si è specificato \const{LOCK\_NB}. - \end{errlist} - } -\end{prototype} + \end{errlist} +} +\end{funcproto} La funzione può essere usata per acquisire o rilasciare un \textit{file lock} a seconda di quanto specificato tramite il valore dell'argomento @@ -195,7 +198,7 @@ ovviamente non possono essere usati insieme. Se con essi si specifica anche \const{LOCK\_NB} la funzione non si bloccherà qualora il \textit{file lock} non possa essere acquisito, ma ritornerà subito con un errore di \errcode{EWOULDBLOCK}. Per rilasciare un \textit{file lock} si dovrà invece -usare direttamente const{LOCK\_UN}. +usare direttamente \const{LOCK\_UN}. Si tenga presente che non esiste una modalità per eseguire atomicamente un cambiamento del tipo di blocco (da \textit{shared lock} a \textit{esclusive @@ -236,7 +239,7 @@ possono avere due processi diversi che aprono lo stesso file. \begin{figure}[!htb] \centering - \includegraphics[width=15.5cm]{img/file_flock} + \includegraphics[width=14cm]{img/file_flock} \caption{Schema dell'architettura del \textit{file locking}, nel caso particolare del suo utilizzo da parte dalla funzione \func{flock}.} \label{fig:file_flock_struct}