GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie macht man eine Funktion async-signalsicher?

Sie können fcntl() als Alternative zu flock() verwenden.


flock() ist im Allgemeinen asynchronsignalsicher, da es sich um einen Systemaufruf handelt. Seine Semantik macht es schwierig, es anders zu implementieren. Es ist nicht in der POSIX-Liste der asynchronsignalsicheren Funktionen, weil es überhaupt nicht in POSIX enthalten ist.

Wahrscheinlich brauchen Sie die explizite Entsperrung nicht, weil flock() Sperren werden automatisch freigegeben, wenn alle Dateideskriptoren, die auf die geöffnete Dateibeschreibung verweisen, geschlossen sind.

Die printf() und fprintf() Aufrufe sollten durch den entsprechenden write() ersetzt werden Anrufe. Die stdio-Funktionen sind nicht in der Liste der Async-Signal-sicheren Funktionen und sind oft stark async-Signal-unsicher.

Die abort() Anruf wird wahrscheinlich am besten ersetzt, indem das Signal auf die Standardaktion gesetzt und erneut an sich selbst gesendet wird. Auf diese Weise wissen Shells, dass Ihr Programm aufgrund des Signals beendet wurde, und können Befehlssequenzen gegebenenfalls abbrechen.


Linux
  1. Wie kann man ein freigegebenes Verzeichnis per Sftp zugänglich machen?

  2. So erstellen Sie ein VPN

  3. Wie kann ich dieses Sed-Skript schneller machen?

  4. Wie macht man eine Datei spärlich?

  5. C++11:Wie aliasiert man eine Funktion?

So lässt sich Raspberry Pi standardmäßig in die GUI booten

So erstellen Sie ein GIF in GIMP [einfaches Tutorial]

Wie kann man Ultracopier dazu bringen, die Cut-Copy-Paste-Funktion in Nautilus zu handhaben?

So erstellen Sie eine Website im Vesta Control Panel

So machen Sie einen Benutzer zum Administrator in Debian 11

So erstellen Sie Minecraft Server auf Linux-Distributionen