#include <setjmp.h> // <csetjmp> en C++
typedef /* implementation-defined */ sigjmp_buf;
Le type sigjmp_buf est l'équivalent POSIX de jmp_buf pour les fonctions
sigsetjmp et siglongjmp. Il peut conserver l'environnement de saut
et, si cela a été demandé, le masque des signaux bloqués.
Comme jmp_buf, ce type est opaque et dépend de l'implémentation. Le programme ne doit pas chercher à inspecter son contenu.
L'exemple suivant déclare un sigjmp_buf et l'utilise avec les variantes POSIX de saut non local.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#define _POSIX_C_SOURCE 200809L #include <setjmp.h> #include <stdio.h> #include <stdlib.h> static sigjmp_buf recoveryPoint; static void stopWork() { siglongjmp( recoveryPoint, 7 ); } int main() { int code = sigsetjmp( recoveryPoint, 1 ); if ( code == 0 ) { stopWork(); } else { printf( "Retour POSIX avec le code %d.\n", code ); } return EXIT_SUCCESS; } |
Le résultat produit est le suivant.
Retour POSIX avec le code 7.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :