GNU/Linux >> Znalost Linux >  >> Linux

Jak udělat funkci asynchronně-signálově bezpečnou?

Jako alternativu k flock() můžete použít fcntl().


flock() je obecně asynchronní signál bezpečný, protože se jedná o systémové volání. Jeho sémantika ztěžuje jeho odlišnou implementaci. Není v seznamu funkcí POSIX bezpečných pro asynchronní signál, protože v POSIX vůbec není.

Pravděpodobně nepotřebujete explicitní odemknutí, protože flock() zámky se uvolní automaticky, když jsou zavřeny všechny deskriptory souboru odkazující na popis otevřeného souboru.

printf() a fprintf() volání by měla být nahrazena odpovídajícími write() hovory. Funkce stdio nejsou v seznamu funkcí async-signal-safe a často jsou silně async-signal-unsafe.

abort() hovor je pravděpodobně nejlepší nahradit nastavením signálu na výchozí akci a jeho přeposláním sobě; tímto způsobem shelly vědí, že váš program skončil kvůli signálu, a mohou zrušit sekvence příkazů, když je to vhodné.


Linux
  1. Jak zrychlit tento sed skript?

  2. Jak udělat soubor řídký?

  3. C++11:Jak vytvořit alias funkce?

  1. Jak zajistit, aby trvalé odkazy WordPress fungovaly v Nginx

  2. Jak zpřístupnit sdílený adresář pomocí Sftp?

  3. Jak vyrobit a aplikovat SVN patch?

  1. Jak vytvořit server CS:GO na Linux VPS

  2. Jak přimět Startx používat alternativní Xinitrc?

  3. Jak vytvořit VPN