\footnotesize \centering
\begin{minipage}[c]{15cm}
\begin{lstlisting}{}
-/*
- * Function CreateMutex: Create a mutex using file locking.
- */
+/* Function CreateMutex: Create a mutex using file locking. */
int CreateMutex(const char *path_name)
{
return open(path_name, O_EXCL|O_CREAT);
}
-/*
- * Function UnlockMutex: unlock a file.
- */
+/* Function UnlockMutex: unlock a file. */
int FindMutex(const char *path_name)
{
return open(path_name, O_RDWR);
}
-/*
- * Function LockMutex: lock mutex using file locking.
- */
+/* Function LockMutex: lock mutex using file locking. */
int LockMutex(int fd)
{
struct flock lock; /* file lock structure */
/* do locking */
return fcntl(fd, F_SETLKW, &lock);
}
-/*
- * Function UnlockMutex: unlock a file.
- */
+/* Function UnlockMutex: unlock a file. */
int UnlockMutex(int fd)
{
struct flock lock; /* file lock structure */
/* do locking */
return fcntl(fd, F_SETLK, &lock);
}
-/*
- * Function RemoveMutex: remove a mutex (unlinking the lock file).
- */
+/* Function RemoveMutex: remove a mutex (unlinking the lock file). */
int RemoveMutex(const char *path_name)
{
return unlink(path_name);
}
-/*
- * Function ReadMutex: read a mutex status.
- */
+/* Function ReadMutex: read a mutex status. */
int ReadMutex(int fd)
{
int res;
\label{fig:ipc_flock_mutex}
\end{figure}
-Il codice per implementare un mutex utilizzando il file
-locking\index{file!locking} è riportato in \figref{fig:ipc_flock_mutex}; a
-differenza del precedente caso in cui si sono usati i semafori le funzioni
-questa volta sono sufficienti due funzioni, \func{LockMutex} e
-\func{UnlockMutex}, usate rispettivamente per acquisire e rilasciare il mutex.
+Il codice delle varie funzioni definite per implementare un mutex utilizzando
+il file locking\index{file!locking} è riportato in
+\figref{fig:ipc_flock_mutex}; si è mantenuta una struttura analoga a quelle
+viste in precedenza, anche se le due interfacce non possono essere
+completamente equivalenti, specie per quanto riguarda la rimozione del mutex.
+
+
+
La prima funzione (\texttt{\small 1--22}) serve per acquisire il mutex.
Anzitutto si apre (\texttt{\small 9--11}), creandolo se non esiste, il file