//JEDYNIE SZKIC, NIE DO KONCA DZIALAJACY

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

pid_t p=1;
pid_t ppid;

void killchild(){
	printf("Ubijam proces %d\n",(int)p);
	kill(p,9);
	//p=ppid;
	}
	
void dochild(){
	if (ppid==getpid()){
	p=fork();
	if (p!=0){
		printf("Tworze proces %d\n",(int)p);
	}
}
}

int main(){
	int i;	
	int status;
	printf("Pid procesu macierzystego %d\n",getpid());
	ppid=getpid();

	if (ppid==getpid()){
		while (1) {
		waitpid(p,&status,WNOHANG);	
		if(signal(SIGINT,killchild)==SIG_ERR){
			printf("problem z sygnalem\n");
		}
		if(signal(SIGQUIT,dochild)==SIG_ERR){
			printf("problem z sygnalem\n");
		}
	}
	}
	else {
		printf("dziecko pid %d\n",getpid());
		while(1);
	}
	return 1;
}


