LONGJMP(3)

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.

CONFORMES CON
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)