/* changepid.c
 * ./changepid
 * change de pid en recevant
 * SIGINT et SIGQUIT
 ***************************
 * Davy Dequidt
 * L3 Info
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

void capte()
{
	int p = fork();
	if( p<0 ){
		perror("Fork");
		exit(1);
		}
	if( p>0 ) exit(0);
}

int sigaction(int sig,const struct sigaction *p_action,struct sigaction *p_action_ancien); 

int mysignal (int sig, void (*h)(int))
{
	struct sigaction s;
	s.sa_handler=h;
	sigemptyset (&s.sa_mask);
	s.sa_flags=SA_RESTART;
	return sigaction(sig,&s,NULL);
}

int main(void)
{
	mysignal(SIGINT,capte);
	mysignal(SIGQUIT,capte);
	for(;;){
		printf("Je suis %d\n",getpid() );
		sleep(1);
	}
	return 0;
}

