Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Type sigjmp_buf (POSIX)

La macro setjmp La fonction siglongjmp


Entête à inclure

#include <setjmp.h>  // <csetjmp> en C++

Type sigjmp_buf (POSIX)

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.

Exemple de code

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;
}
Déclarer et utiliser un sigjmp_buf

Le résultat produit est le suivant.

Retour POSIX avec le code 7.

Sujets connexes

<setjmp.h>
jmp_buf
siglongjmp
sigsetjmp


La macro setjmp La fonction siglongjmp




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé