A. Función signal
La función signal es el gestor de señales por excelencia. Permite
especificar la acción que debe realizarse cuando un
proceso recibe una señal y lo prepara para recibir cierto tipo
de señales. Esto supone que será preciso añadir una llamada a
signal para cada tipo de señal que se desee que el proceso
reciba sin que cause su finalización. Su definición es:
include <signal.h>
void (*signal (int signum, void (*func) (int))) (int);
La definición de la función en ANSI C establece
que ésta precisa dos parámetros -el número de la señal y el
tipo de acción que debe realizar- y devuelve un puntero
a una función que no establece nada.
Mediante una llamada con la función signal se establece un
gestor de señales para la señal signum (número de la señal).
Func permite elegir una de las tres acciones que se pueden
realizar cuando se recibe la señal:
- SIG_IGN: ignora la señal.
- SIG_DFL: devuelve a la señal su
comportamiento por defecto.
- La dirección de la función especificada por el
usuario. En este caso, la definición de la función será:
include <signal.h>
void func (int sig);
donde sig es el número de la señal cuya acción se desea
programar. Después de ser programada, la función deberá contener
el código correspondiente para que la acción sea la
deseada.
La llamada a signal devuelve, si todo va bien, el valor que tenía
func, es decir, la disposición previa de la señal. Ésta sirve
para restaurar dicho valor en cualquier momento; dicho de otro
modo, la función signal devuelve un puntero a una función. En
cambio, si se produce algún error, la función signal devuelve
SIG_ERR; el código del error resultante se encuentra en
la variable externa errno.
Como argumento func se pueden utilizar dos valores especiales:
SIG_DFL, que hace referencia a la función que maneja
las señales por defecto, y SIG_IGN, que ignora la señal
recibida. En el fichero <signal.h> se puede encontrar
una definición especial de las constantes SIG_DFL, SIG_IGN
y SIG_ERR, de forma que el argumento func, en la llamada a
signal, puede sustituirse por un número, 0, 1 y -1,
respectivamente. La definición de estos valores enteros se realiza
mediante un cast del siguiente modo:

Cuando una señal llega a un proceso y es capturada, suceden dos
cosas, en el orden en que se exponen: en primer lugar,
se restablece a la señal su acción por defecto (generalmente,
finalizar el proceso), y en segundo lugar, se llama a la
función programada al efecto con un número entero como
argumento, que coincide con el número asociado con la señal que se
está capturando. Cuando la función retorna, el proceso
continúa ejecutándose en el punto donde fue interrumpido.
Hay 1 opinión. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
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.369 | ||
|
Instalación de un Servidor de Correo en Linux Linux es un sistema operativo libre, con lo que no se tiene que pagar por ningún tipo de licencia. También se puede conseguir el código fuente y poderlo modificar libreme... [16/06/04] |
|
13.740 | ||
|
Creación de Paginas Web con Html HTML es el lenguaje básico y muy sencillo que nos permite la creación de Paginas Web. Este curso ha nacido con la intención de complementar los anteriores cursos de JavaS... [26/05/05] |
|
20.578 | ||
Publicar en
del.icio.us
digg
meneame