+Come illustrato in \secref{sec:ipc_sysv_sem} i semafori del \textit{SysV IPC}
+presentano una interfaccia inutilmente complessa e con alcuni difetti
+strutturali, per questo quando si ha una semplice esigenza di sincronizzazione
+per la quale basterebbe un semaforo binario (quello che abbiamo definito come
+\textit{mutex}, che indica la disponibilità o meno di una risorsa, e non ha
+associato un contatore come i semafori) si possono utilizzare metodi
+alternativi.
+
+La prima possibilità, utilizzata fin dalle origini di Unix, è quella di usare
+dei \textsl{file di lock} (per i quali esiste anche una opportuna directory,
+\file{/var/lock}, nel filesystem standard). Per questo si usa la
+caratteristica della funzione \func{open} (illustrata in
+\secref{sec:file_open}) che prevede\footnote{questo è quanto dettato dallo
+ standard POSIX.1, ciò non toglie che in alcune implementazioni questa
+ tecnica possa non funzionare; in particolare per Linux, nel caso di NFS, si
+ è comunque soggetti alla possibilità di una race condition.} che essa
+ritorni un errore quando usata con i flag di \macro{O\_CREAT} e
+\macro{O\_EXCL}. In tal modo la creazione di un file di lock può essere
+eseguita atomicamente, il processo che crea il file con successo si può
+considerare come titolare del lock (e della risorsa ad esso associata) mentre
+il rilascio si può eseguire con una chiamata ad \func{unlink}.
+
+Questa tecnica ha però parecchi problemi, che non la rendono una alternativa
+praticabile; anzitutto anche in questo caso in caso di terminazione imprevista
+del processo lascia allocata la risorsa (il file di lock) che deve comunque
+essere cancellata esplicitamente. Inoltre il controllo della disponibilità può
+essere fatto solo con una tecnica di polling, che è molto inefficiente.
+Modalità alternative prevedono l'uso di \func{link}, che fallisce se il nome
+esiste già, ma i problemi sono gli stessi.
+
+Per questo motivo la tecnica più pulita è quella di utilizzare \func{fcntl} su
+un file creato per l'occazione per ottenere un write lock sul primo byte del
+file (che non è detto debba esistere); in questo modo potremo usare il lock
+come un \textit{mutex}: per bloccare la risorsa basterà acquisire il lock, per
+sbloccarla basterà rilasciare il lock; l'accesso sarà controllabile, senza
+necessità di ricorrere al \textit{polling}\index{polling}.
+