A veces, se nos presenta la necesidad de modificar el comportamiento de nuestro programa por ejemplo cuando el usuario pulse Control+C, o cuando terminemos nuestra aplicación, o cuando… dividamos por 0, o más cosas… podemos ver un listado de las diferentes señales con:
man 7 signal
Podemos utilizar para probar este programa (signals.c):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <signal.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> void salir(int recib); void alarma(int que); int tmp=0; int divi=5; int main() { signal(SIGINT, salir); /* Control+C */ signal(SIGKILL, salir); /* kill */ signal(SIGFPE, salir); /* división por 0 */ signal(SIGALRM, alarma); /* alarma */ signal(SIGUSR1, alarma); /* definido por el usuario */ int numero=4; while (1) { usleep(1000); /* Le damos un respiro a la CPU mientras estamos en el bucle */ tmp++; if (tmp%1000==0) { tmp=tmp/divi; printf("tmp = %d\n", tmp); } } } void salir(int recib) { printf("Salgo porque "); switch (recib) { case SIGINT: printf("has pulsado Control+C... |
Últimos comentarios