Frage

Nicht syscall der Wrapper aber so etwas wie snprintf (), dprintf ()

War es hilfreich?

Lösung 3

Schließlich neuesten Versionen von man 7 signal-safety enthalten interessiert Liste: Signal-safety.7.html

Andere Tipps

  

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 und exec wäre. Wenn exec-ing (nach fork-ing, in dem ein Kind), werden Sie Ihre Prozess-ID mit getppid geben müssen; und in der Mutter Sie benötigen, um wait bis es beendet wird, bevor abort 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 ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top