Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       longjmp, siglongjmp - Saut non local vers un contexte de pile sauvegardé

SYNOPSIS

       #include <setjmp.h>

       void longjmp(jmp_buf env, int val);

       void siglongjmp(sigjmp_buf env, int val);

   Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

       siglongjmp() : _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE

DESCRIPTION

       longjmp()  et  setjmp(3)  sont  utiles  pour la gestion d'erreurs et d'interruptions rencontrées dans une
       routine bas-niveau d'un programme. longjmp() restitue l'environnement sauvegardé lors du dernier appel de
       setjmp(3)  avec  l'argument env correspondant. Après l'appel longjmp(), l'exécution du programme continue
       comme si l'appel correspondant de setjmp(3) venait juste de renvoyer val. longjmp() ne peut pas  renvoyer
       0. Si longjmp est appelé avec 0 en tant que second argument, setjmp(3) renverra 1 à la place.

       siglongjmp()  est  identique  à  longjmp()  excepté  pour le type de son argument env. Si et seulement si
       l'appel sigsetjmp(3) définit cet  env,  utilisé  comme  drapeau  savesigs  non  nul,  alors  siglongjmp()
       restituera également le signal masqué qui a été sauvé par sigsetjmp(3).

VALEUR RENVOYÉE

       Ces fonctions ne reviennent jamais.

CONFORMITÉ

       C89, C99 et POSIX.1-2001 spécifient longjmp(). POSIX.1-2001 spécifie siglongjmp().

NOTES

       POSIX  ne  précise  pas  si  longjmp() restaurera le contexte du signal (consultez setjmp(3) pour plus de
       détails). Si vous  voulez  sauver  et  restaurer  le  masque  de  signaux  de  façon  portable,  utilisez
       sigsetjmp(3) et siglongjmp().

       Les valeurs des variables automatiques ne sont pas spécifiées après un appel à longjmp() si elles suivent
       tous les critères suivants :

       •  elles sont locales à la fonction qui effectue l'appel correspondant setjmp(3) ;

       •  leur valeur est changée entre les appels setjmp(3) et longjmp() ;

       •  elles ne sont pas déclarées comme volatile.

       Ces remarques s'appliquent aussi à siglongjmp().

       longjmp() et siglongjmp() rendent  les  programmes  difficiles  à  comprendre  et  à  maintenir.  Il  est
       préférable si possible d'utiliser une autre méthode.

VOIR AUSSI

       setjmp(3), sigsetjmp(3)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe  francophone de traduction de
       Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org>  ou  par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

                                                 13 janvier 2009                                      LONGJMP(3)