Procesos en C: Ejemplo de un sencillo cronómetro con SIGALRM

Continuando con el artículo de la semana pasada sobre procesos en C hoy os dejo aquí un sencillo ejemplo de un cronómetro:

// Para las funciones pause y alarm:
#include <unistd.h>
// Para las constantes SIGALRM y similares
#include <signal.h>
 
#include <stdio.h>
 
// Esta es la función que se va a ejecutar cada vez que se reciba la
// señal SIGALRM
void contar_segundos() {
	// Usamos static para que se conserve el valor de "segundos"
	// entre cada llamada a la función
	static int segundos=0;
 
	segundos++;
	printf("Han pasado %d segundos.\n", segundos);
}
 
int main() {
	// Asociamos la señal SIGALRM a la función contar_segundos
	signal(SIGALRM, contar_segundos);
 
	// Ponemos en marcha un bucle
	while(1) {
		// Establecemos una alarma para dentro de un segundo
		alarm(1);
		// Pausamos la ejecución del programa para que 
		// se quede esperando a recibir una señal.
		pause();
	}
}

Curso de programación en C para principiantes

Ejercicios de C resueltos y comentados

2 thoughts on “Procesos en C: Ejemplo de un sencillo cronómetro con SIGALRM

  1. Si tienes curiosidad por saber el valor de SIGALRM puedes probar el siguiente programilla:

    #include // Para las constantes SIGALRM y similares
    #include

    int main() {
    printf(“Valor de SIGALRM: %i”, SIGALRM);
    }

    De todos modos no tienes que preocuparte del valor de SIGALRM porque precisamente esa es la gracia de usar constantes.

Deja un comentario