#include <bits/types/siginfo_t.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

typedef struct sigaction SIGS;

int counter = 0;

void handler(int sig, siginfo_t* info, void* context) {
	if (sig == SIGUSR1){
		counter++;
		printf("Hello!\n");
	}else if ( sig == SIGUSR2 ){
		printf("%d\n", counter);
		abort();
	}
}

int main(int argc, char *argv[]){

	SIGS context = {.sa_flags = SA_SIGINFO, .sa_sigaction = handler};
	sigaction(SIGUSR1, &context, NULL);
	sigaction(SIGUSR2, &context, NULL);

	while(1){
		printf("The program is running...\n");
		sleep(1);
	}

	return 0;
}

