#include <stdio.h>
#include <signal.h>
void ALARMhandler(int sig)
{
signal(SIGALRM, SIG_IGN); /* ignore this signal */
printf("Hello");
signal(SIGALRM, ALARMhandler); /* reinstall the handler */
}
int main(int argc, char *argv[])
{
alarm(2); /* set alarm clock */
while (1)
;
printf("All done");
}
que esperan que el programa para imprimir "hola" después de 2 segundos, pero en lugar de la salida es "zsh: alarma ./a.out"señales simples - la programación y la alarma de función C
Cualquier idea de lo que es pasando?
Real- ejemplo mundial: una vez trabajé en un sistema que usaba una base de datos de Access como back-end, y bajo ciertas circunstancias una llamada 'printf()' en un manejador de señal escribía en el archivo .mdb en lugar de stdout, manchando la base de datos irreparablemente . –