C. Otras funciones: pause, sigpause, setjmp y
longjmp
La función pause permite suspender la ejecución de
un proceso hasta la recepción de una señal. Se dice entonces que el
proceso queda en espera; como la llegada de una señal
interrumpe este estado, se dice que pause espera la llegada de una
señal. La definición de esta función es la siguiente:
include <unistd.h>
int pause (void);
Cuando por fin llega una señal, en primer lugar se ejecuta la
rutina de tratamiento de la señal; después, la función pause
devuelve un -1 y en errno se sitúa el valor
EINTR, que indica que la señal ha sido recibida y que la
función pause se ha ejecutado de forma correcta.
Con frecuencia, pause espera a una alarma de reloj; es decir, la
espera finaliza con una señal SIGALRM. Ahora bien, hay que
destacar que la función pause no es selectiva respecto al tipo de
señal que puede terminar con su espera, lo que no sucede con la
función sigpause.
Como ya se ha explicado, es posible detener un proceso hasta la
recepción de una o varias señales concretas, lo que se puede fijar
mediante la función sigpause. La definición de esta función
es:
include <signal.h>
long sigpause (long mask);
Así, la función sigpause suspende el proceso hasta que llega una de
las señales que no están bloqueadas en mask. Una vez que el proceso
deja de estar detenido, la función sigpause devuelve el valor
original a la máscara de señales. Al igual que ocurre en la función
pause, devuelve un -1 y en errno se sitúa el valor
EINTR, que indica que la señal ha sido recibida y que la
función sigpause se ha ejecutado correctamente.
En C no es posible ir con un goto a una etiqueta que se
encuentra en otra función. Para llevar a cabo este tipo de
ramificaciones es preciso emplear las funciones setjmp y longjmp
(se encuentran en <setjmp.h>). No obstante, su
uso más relevante es el destinado a la captura de condiciones de
error que aparecen en llamadas a funciones profundamente anidadas.
La función longjmp se suele llamar desde un gestor de
señales para retornar al bucle principal de un programa, en lugar
de retornar directamente desde el gestor. En realidad, el estándar
ANSI C establece que un gestor de señales puede retornar a
la función principal o llamar a abort, exit o
longjmp.
Información de los programas con certificado
Hay 1 opinión. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Generadores de código Necesitamos construir proyectos en menor tiempo, con calidad y utilizando metodologias actuales, por eso te proponemos una serie de consejos, normas y cualidades de est... [24/01/06] |
|
2.288 | ||
|
Funciones en C (primera parte) Curso de programacíon informática sobre Funciones en C en el orden de los fundamentos de la programación. Comprende el desarrollo de un software utilizando funciones y a ... [17/10/08] |
|
3.077 | ||
|
Técnicas para el desarrollo de computación móvil (orientado a PDA) Uno de los nuevos paradigmas en el desarrollo de proyectos informáticos es la computación móvil (computación Ubicua). Aquí se verá todo lo que involucra la creación de un... [31/03/06] |
|
1.405 | ||
Publicar en
del.icio.us
digg
meneame