#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

long seconds = 0;

void real_handler(int);

int main(){
	struct itimerval time;
	long i;

	//seta o valor para qual o timer será setado quando chegar a 0
	time.it_interval.tv_sec = 1;
	time.it_interval.tv_usec = 0;

	//determina o valor de início do timer
	time.it_value.tv_sec = 1;
	time.it_value.tv_usec = 0;

	//seta tratador para o sinal
	signal(SIGALRM, real_handler);
	
	//para gerar sinal de acordo com a estrutura time
	setitimer(ITIMER_REAL, &time, NULL);
	
	for( i = 0; i< 999999999; i++);
	for( i = 0; i< 999999999; i++);
	for( i = 0; i< 999999999; i++);
	for( i = 0; i< 999999999; i++);
	for( i = 0; i< 999999999; i++);
	for( i = 0; i< 999999999; i++);
	
	
	//recebe o valor que falta pra gerar outro sinal
	getitimer(ITIMER_REAL, &time);
	printf("Segundos : %d\nMicrossegundos: %d\n", seconds, 1000000 - time.it_value.tv_usec );
	
}

void real_handler(int sig){
	signal(SIGALRM, real_handler);
	seconds++;
}

