#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

void siginthandler(int sig_num) {
        printf("Signal %d attempted \n", sig_num);
		return; 
}

void sigchldhandler(int sig_num) {
		int status; 

        printf("Signal %d attempted \n", sig_num);

		int childpid = wait(&status);

        printf("Child process %d exited with status %d \n", childpid, WEXITSTATUS(status));
		return; 
}

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

	int opt=atoi(argv[1]);

	if(opt==1) {
	    // Ignore the Ctrl+C (SIGINT) signal
    	signal(SIGINT, SIG_IGN);
	}
	else if(opt==2)
    	signal(SIGINT, siginthandler);
	else if(opt==3) {
    	signal(SIGCHLD, sigchldhandler);
		if (fork() ==0) { sleep(5); exit(5); }
	}

    while(1) {
        printf("Running... Try pressing Ctrl+C\n");
        sleep(1);
    }
    return 0;
}
