siglongjmp






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


#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

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

Ces fonctions ne reviennent jamais.

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

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









                             ‐2‐


   possible d’utiliser une autre méthode.

setjmp(3), sigsetjmp(3)

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/.

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