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.
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.44 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> ».