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é

Fonction siglongjmp (POSIX)

Le type sigjmp_buf La fonction sigsetjmp


Entête à inclure

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

Fonction siglongjmp (POSIX)

void siglongjmp( sigjmp_buf env, int value );

La fonction siglongjmp restaure l'environnement sauvegardé par sigsetjmp. Si cet environnement a été sauvegardé avec l'option correspondante, le masque des signaux bloqués est également restauré.

Comme longjmp, cette fonction ne retourne pas à son appelant. L'exécution reprend au niveau de sigsetjmp, qui semble alors retourner une seconde fois.

Paramètres

Valeur de retour

Cette fonction ne rend pas la main à son appelant.

Exemple de code

L'exemple suivant déclenche un retour non local POSIX depuis une fonction appelée plus profondément.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
#define _POSIX_C_SOURCE 200809L

#include <setjmp.h>
#include <stdio.h>
#include <stdlib.h>

static sigjmp_buf recoveryPoint;

static void parseRecord( int recordNumber ) {

    if ( recordNumber == 3 ) {
        siglongjmp( recoveryPoint, recordNumber );
    }

    printf( "Enregistrement %d accepté.\n", recordNumber );
}

int main() {

    int code = sigsetjmp( recoveryPoint, 1 );

    if ( code == 0 ) {
        parseRecord( 1 );
        parseRecord( 3 );
    } else {
        printf( "Enregistrement %d rejeté.\n", code );
    }

    return EXIT_SUCCESS;
}
Exemple d'utilisation de la fonction siglongjmp

Le résultat produit est le suivant.

Enregistrement 1 accepté.
Enregistrement 3 rejeté.

Sujets connexes

<setjmp.h>
longjmp
sigjmp_buf
sigsetjmp


Le type sigjmp_buf La fonction sigsetjmp




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