LONGJMP
Section : Manuel du programmeur Linux (
3)
Mise à jour de la version anglaise : 6 septembre 2007
Index
Menu principal
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 || _XOPEN_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 de
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()
hormis le type de son argument
env.
Si l'argument
savesigs
est non nul lors de l'appel de
sigsetjmp(3),
alors
siglongjmp()
restituera également l'ensemble des signaux bloqués.
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()
restaure le contexte de signal.
Si vous voulez sauver et restaurer le masque de signaux, utilisez
siglongjmp().
Les valeurs des variables automatiques sont indéterminées après un appel à
longjmp()
si elles rencontrent tous les critères suivants :
- *
-
elles sont locales à la fonction qui a effectué l'appel
setjmp(3)
correspondant ;
- *
-
leurs valeurs sont modifiées entre les appels à
setjmp(3)
et
longjmp() ;
et
- *
-
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)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 4 novembre 1996
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 3 longjmp ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008