Ich brauche eine Liste von Async-Signal Sicherer Funktionen von glibc
-
19-09-2019 - |
Frage
Nicht syscall der Wrapper aber so etwas wie snprintf (), dprintf ()
Lösung 3
Schließlich neuesten Versionen von man 7 signal-safety
enthalten interessiert Liste: Signal-safety.7.html
Andere Tipps
Ich bin ziemlich sicher, dass Sie die Dokumentation
Ich brauche dies in SIGSEGV Handler nach einem Absturz der Anwendung.
Ich möchte entspannen Stapel auf Crash
Wenn Sie versuchen, einen Stack-Trace zu erfassen:
-
Normalerweise
abort
würde einen Core Dump verursachen, das durch einen Debugger ausgeführt werden kann, den Stack-Trace zu erzeugen. -
Alternativ kann eine rohes (aber Signal-safe) Art und Weise, dies zu tun ein separates Dienstprogramm (zum Beispiel „pstack“), um eine Stack-Trace Ihrer abgestürzt Aufgabe
fork
undexec
wäre. Wennexec
-ing (nachfork
-ing, in dem ein Kind), werden Sie Ihre Prozess-ID mitgetppid
geben müssen; und in der Mutter Sie benötigen, umwait
bis es beendet wird, bevorabort
aufrufen.
Auf der anderen Seite, wenn Sie versuchen, eine „saubere“ Ausfahrt zu tun, nachdem SIGSEGV (z Gewährleistung C ++ Destruktoren aufgerufen, etc.) - dann sollten Sie gewarnt werden, dass POSIX sagt:
http://pubs.opengroup.org/onlinepubs/9699919799/ Funktionen / V2_chap02.html # tag_15_04_03_02 :
Das Verhalten eines Prozesses nicht definiert ist, nachdem es eine SIGFPE ignoriert, SIGILL, SIGSEGV oder SIGBUS Signal, das nicht durch Kill () erzeugt wurde, sigqueue () oder erhöhen ().
und http://pubs.opengroup.org/onlinepubs/9699919799 /functions/V2_chap02.html#tag_15_04_03_03 :
Das Verhalten eines Prozesses nicht definiert ist, nachdem es in der Regel kehrt aus ein Signal Fang-Funktion für einen SIGBUS, SIGFPE, SIGILL oder SIGSEGV Signal, das durch kill (), sigqueue () nicht erzeugt wurde, oder erhöhen ().