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)