#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
volatile int alarm_happened, ctrl_c_happened;
void handle_alarm(int xxx)
{ alarm_happened=1; }
void handle_ctrl_c(int xxx)
{ ctrl_c_happened=1; }
void main(void)
{ alarm_happened=0;
ctrl_c_happened=0;
signal(SIGALRM, handle_alarm);
signal(SIGINT, handle_ctrl_c);
alarm(8);
while (1)
{
printf(".");
fflush(stdout);
sleep(5);
if (alarm_happened)
{ printf("ALARM!");
fflush(stdout);
alarm_happened=0; }
if (ctrl_c_happened)
{ printf("INTERRUPT!");
fflush(stdout);
ctrl_c_happened=0; } }
printf("\nAll Done\n"); }