Tratar alarma mediante señales

Páginas: 2 (416 palabras) Publicado: 22 de febrero de 2012
Armado de un manejador
El código del primer ejemplo (prog1.c), muestra un ejemplo completo de cómo se arma un manejador de una señal determinada. El programa consiste en ejecutar la rutinatratar_alarma() cada 3 segundos. Para ello, se arma un manejador para la señal SIGALRM donde se ha especificado la función tratar_alarma() como manejador.

El programa principal entra dentro de un bucleinfinito. En primer lugar, se define un temporizador mediante la funciónalarm(3) que dispara la señal SIGALRM a los 3 segundos. Seguidamente,  el proceso se auto suspende con la llamadapause(). Elvencimiento del temporizador genera la señal SIGALRM, la cual despierta al proceso, y con ello, se ejecuta la rutina tratar_alarma(). En la siguiente iteración, el proceso vuelve a armar de nuevo eltemporizador. Este proceso se repite dentro del bucle hasta la llegada de la señal SIGINT (o Ctrl-C) generada desde el teclado, y cuya acción es finalizar el proceso.

Armado de dos manejadores
El códigodel segundo ejemplo (prog2.c), muestra un ejemplo de cómo se arman dos manejadores. El ejemplo consiste en contar el número de veces que se ha pulsado Ctrl-C (SIGINT) durante 5 segundos. Cada vez quese pulsa Ctrl-C, se incrementa una variable global num_cortes. El programa termina cuando salta la señal SIGALRM, mostrando el valor de la variable num_cortes terminando con ello el programa.#include <stdio.h>
#include <signal.h>
void tratar_alarma (); // Prototipo del manejador
int main (){
struct sigaction act;
/* Armar el manejador */
act.sa_handler = tratar_alarma;sigemptyset(&act.sa_mask);
act.sa_flags=0;
sigaction(SIGALRM, &act, NULL);

printf("Disparo de la alarma cada 3 segundos.\n");
printf("Teclee Ctrl-C para terminar elproceso.\n");
for(;;) {
alarm (3);
pause();
}
return 0;
}
void tratar_alarma( int a ) {
printf ("Alarma activada %d. \n", a);

#include <stdio.h>
#include <stdlib.h>...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Analisis de señales mediante convolucion
  • Grafica De Una Señal Diente De Sierra Mediante Las Series De Fourier
  • Luces De Señal Y Alarma
  • Señales de Alarma del Cáncer
  • Tratar la endometriosis mediante la alimentación
  • Alarma Laser
  • Alarma
  • Alarma laser

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS