#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

#define TIME_CST 330000

int cpt_ent = 0;
int cpt_trai = 0;

void do_work(unsigned int duration) /* duration en millisecondes */
{
    int i;

    for(i=0;i<TIME_CST *duration;i++) asm volatile ("nop");
}

void signal_handler()
{
    cpt_ent++;
    if(cpt_ent-cpt_trai > 1) printf("Trop d'interruptions... \n");
}

void affiche()
{
    while(cpt_trai < cpt_ent)
    {
        do_work(1000);
        printf("Signal recu!\n");
        cpt_trai++;
    }
}

int main()
{
    printf("PID = %d\n", getpid());
    signal(SIGUSR1, signal_handler);

    while(1)
    {
        affiche();
    }

    pause();

    return 0;
}
