Loading

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  (voir
   feature_test_macros(7)) :

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

       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()
       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.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

       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)