3.305 cursos gratis
6.270.120 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Procesos en C. Sincronización (primera parte) > Procesos en C. Función signal

Procesos en C. Sincronización (primera parte)

Autor: Editorial McGraw-Hill
Curso: 5/5 5/5 (1 opinión) |993 alumnos|Fecha publicación: 21/10/2008

Capítulo 10:

 Procesos en C. Función signal

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:

Procesos en C. Función signal

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.

Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 1 opinión. Opina sobre este curso.


Cursos similares a Procesos en C. Sincronización (primera parte)


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]
 4,33/5 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]
 4,38/5 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]
 4,47/5 20.578  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail