flock()
è generalmente async-signal-safe perché è una chiamata di sistema. La sua semantica rende difficile implementarla in modo diverso. Non è nel list di POSIX delle funzioni async-signal-safe perché non è affatto in POSIX.Utilizzare flock() nel gestore sigaction
È possibile utilizzare flock()
nel gestore di sigaction senza problemi?
La documentazione di Mac OS X per 'flock()' non fornisce alcun aiuto diretto. Non c'è motivo di supporre che 'flock()' pasticcia con le strutture dello spazio utente, quindi ci sono tutte le ragioni per pensare che sia async-signal-safe, ma non è conclusivo. La funzione 'fcntl()', che è la chiamata al sistema di chiusura POSIX, è async-signal-safe, che supporta la vista che 'flock()' può essere implementato in modo da essere async-signal-safe, ma non è ancora prova . Forse dovresti eseguire l'upgrade per usare 'fcntl()', e poi saprai che sei al sicuro. –
@JonathanLeffler Cna Io uso 'flock()' per bloccare e 'fcntl()' per sbloccare? – MOHAMED
Per favore vedi la mia risposta aggiuntiva alla tua domanda iniziale qui: http://stackoverflow.com/a/16979601/694576 – alk