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)