flock()
ist generell async-signalsicher, da es sich um einen Systemaufruf handelt. Seine Semantik macht es schwierig, es anders zu implementieren. Es ist nicht in den POSIX list async-Signal-sicheren Funktionen, weil es überhaupt nicht in POSIX ist.Verwenden Sie flock() im sigaction-Handler
Ist es möglich, flock()
im sigaction Handler ohne Probleme zu verwenden?
Die Mac OS X-Dokumentation für 'flock()' gibt keine direkte Hilfe. Es gibt keinen Grund zu der Annahme, dass 'flock()' mit User-Space-Strukturen verwechselt wird, also gibt es allen Grund anzunehmen, dass es async-signalsicher sein wird, aber das ist nicht schlüssig. Die 'fcntl()' -Funktion, die den POSIX-Schließsystemaufruf darstellt, ist async-signalsicher, was die Ansicht unterstützt, dass 'flock()' so implementiert werden kann, dass sie async-signalsicher ist, aber das ist immer noch kein Beweis . Vielleicht sollten Sie ein Upgrade durchführen, um stattdessen 'fcntl()' zu verwenden, und dann wissen Sie, dass Sie in Sicherheit sind. –
@ JonathanLeffler Cna Ich benutze 'flock()' zu sperren und 'fcntl()' zu entsperren? – MOHAMED
Bitte sehen Sie meine zusätzliche Antwort auf Ihre erste Frage hier: http://Stackoverflow.com/a/16979601/694576 – alk