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


void parent_terminate(int test)             /*	Routine fuer SIGCLD */
{
   /*printf("Das Vater-Programm wurde gekillt!\n\n");*/
   exit(0);
}





int main(int argc, char *argv[])
{
   int childpid;
   unsigned int wait_sec=atoi(argv[1]);
   char eingabe[100];
   
   
   /*signal(SIGCLD, SIG_IGN);*/
   signal(SIGCLD, parent_terminate);  
   
   /*printf("pid des Prozesses = %d, Parent-pid des Prozesses = %d\n\n",getpid(), getppid());*/
   
   if ((childpid = fork()) == -1)
   {
      fprintf(stderr, "Fehler Kann nicht geforkt werden!!!\n\n");
      exit(1);
   }
   else if (childpid == 0)
   {
      /* Kindprozess */
      /*printf("child Prozess mit dem PID = %d, und die parent-PID = %d\n", getpid(), getppid());*/
      scanf("%s", eingabe);
      printf("%s", eingabe);
      exit(0);
   }
   else
   {
      /* Parent prozess */
      sleep(wait_sec);
      /*printf("parent Prozess mit dem PID = %d, und die geforkte child-PID = %d\n",  getpid(), childpid);*/
      kill(childpid, SIGKILL);
      printf("");
      exit(0);
   }
}
