siglongjmp() stellt die Umgebung wieder her, die vom letzten sigsetjmp -Aufruf mit demselben sigjmp_buf -Argument im selben Prozess aufgerufen wurde. Wenn vorher sigsetjmp() nicht aufgerufen wird oder die Funktion, in der dieses Makro aufgerufen wurde in der Zwischenzeit beendet wurde, so ist das Verhalten nicht definiert.
Alle zugreifbaren Objekte besitzen dieselben Werte wie zu dem Zeitpunkt, als siglongjmp() aufgerufen wurde, mit der Ausnahme, dass die Werte von automatischen Objekten, die zwischen der Ausführung von sigsetjmp() und dem Aufruf von siglongjmp() geändert wurden, unbestimmt sind. Da siglongjmp() den normalen Funktionsaufruf- und -Rückkehrmechanismus verwendet, läuft diese Funktion auch im Zusammenhang mit Unterbrechungen, Signalen und den damit zusammenhängenden Funktionen korrekt ab. Trotzdem gilt, dass das Verhalten nicht definiert ist, wenn siglongjmp() von einer verschachtelten Signalbehandlungs-Funktion aus aufgerufen wird (d.h. von einer Funktion die auf Grund eines Signals aus einer anderen Signalbehandlungsfunktion heraus aufgerufen wurde). siglongjmp() stellt die gesicherte Signalmaske nur dann wieder her, wenn und nur wenn das Argument env durch einen Aufruf von sigsetjmp() mit einem Argument savemask ungleich 0 initialisiert wurde.
siglongjmp() ist nicht threadsicher. Das Ergebnis eines Aufrufs dieser Funktion ist undefiniert, wenn die Struktur jmp_buf nicht im aufrufenden Thread initialisiert wurde.
|