NOMBRE¶
longjmp, siglongjmp - salto no local a un contexto de pila salvaguardado
SINOPSIS¶
#include <setjmp.h>
void longjmp(jmp_buf env, int val);
void siglongjmp(sigjmp_buf env, int val);
DESCRIPCIÓN¶
longjmp() y
setjmp() son útiles para tratar con errores e
interrupciones encontrados en una subrutina de bajo nivel de un programa.
longjmp() restaura el entorno salvaguardado por la última llamada
a
setjmp() con el argumento
env correspondiente. Después de
que
longjmp() haya acabado, la ejecución del programa
continúa como si la llamada correspondiente a
setjmp() simplemente
hubiera devuelto el valor
val.
longjmp() no puede hacer que se
devuelva 0. Si se llama a
longjmp() con un segundo argumento de valor
0, se devuelve 1 en su lugar.
siglongjmp() es similar a
longjmp() excepto en el tipo de su
argumento
env. Si la llamada a
sigsetjmp() que establece este
env empleó una opción
savesigs distinta de cero,
siglongjmp() también restaura el conjunto de señales
bloqueadas.
VALOR DEVUELTO¶
Estas funciones nunca regresan.
POSIX.
longjmp también está definida por C ANSI/ISO.
OBSERVACIONES¶
POSIX no especifica si
longjmp restaurará el contexto de señal.
Si quiere salvaguardar y restaurar máscaras de señales, emplee
siglongjmp.
longjmp() y
siglongjmp() hace que los programas sean
difíciles de entender y mantener. Si es posible se debería emplear
algún mecanismo alternativo.
VÉASE TAMBIÉN¶
setjmp(3),
sigsetjmp(3)