LONGJMP(3) | Funciones de biblioteca | LONGJMP(3) |
longjmp, siglongjmp - salto no local a un contexto de pila salvaguardado
#include <setjmp.h>
void longjmp(jmp_buf env, int val); void siglongjmp(sigjmp_buf env, int val);
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.
Estas funciones nunca regresan.
POSIX. longjmp también está definida por C ANSI/ISO.
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.
2 Marzo 1997 |