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

int fils;

void catch_sigint(int sig){
	if(sig==SIGINT){
		kill(fils, SIGKILL);	
		printf("Interruption prematuree du fils\n");
	}
}

int main(){
	struct sigaction action;	
	// pour killer un processus par sigkill, il faut taper : $ kill -INT 29348 (le pid du proc)

	fils = fork();
	switch(fils){
		case(-1) : perror("erreur"); break; exit(0);
		case(0) : 
			printf("%d\n", getppid());
			while(1){
				printf("Bonjour\n");
				sleep(1);
			}
			break;
		default :
			action.sa_handler=catch_sigint;		//On definit quelle fonction va appeler action s'il recoit un signal
			sigaction(SIGINT, &action, NULL);	//S'il recoit SIGINT, il le met dans action et va donc appeler la fct indiquee avant
			sleep(20);
			kill(fils, SIGKILL);			//kill sert à envoyer un signal
			break;
	}
	return 0;	
}

