#include<stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
int mes1,mes2;
FILE *klop;
void signal_handler(int sig)
{
	switch(sig)
	{
	
	case SIGHUP: 
	   
	  fprintf(klop,"1 ");
	  break;
	
	case SIGTERM:
	  
	  printf("zapisalos\n");
	  _exit(0);
	  break;
	    
	}
}
void main()
{
	int i,j;
	
	pid_t pid;
	fflush(NULL);
	signal(SIGTERM,signal_handler);
	signal(SIGHUP ,signal_handler);
	signal(SIGSEGV,signal_handler);
	klop=fopen("2.txt","ab");
	pid=fork();
	
	switch( pid)
	{
		case -1 : 
		  printf("no creat");
		  _exit(1);
	
		case 0 : //потомок
	
		    printf("children\n");		  
		    break;
		
		
		default : //родитель
		  {	
		    for (i = 0;i<5 ;i++)
		  {
		 
		     //kill(pid,SIGSEGV);
		    kill(pid,SIGHUP);
		     sleep(1);
		    
		  }
		printf("ubili children\n");
	
		kill(pid,SIGTERM);
		  }
		fclose(klop);
	        klop=fopen("2.txt","r");
		
		while(!feof(klop))
		  {
		    fscanf(klop,"%d ",&i);
		    printf("%d ",i);
		  };
		printf("\n");
	}
		
	}
Подскажите , почему дочерний процесс то уничтожается?