#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>


int main(int argc, char **argv)
{
 pid_t kind;
 int i,status;
 int anzahlkinder = 5;

 for(i=0;i<anzahlkinder;i++)
  {
   kind=fork();
   switch(kind)
    {
      case -1 :   printf("Fehler bei fork()..........\n");  exit(0);
      case 0  :   printf("Kind : Kind Nr.%d erzeugt mit PID %d\n"
                          ,i+1,getpid());
                  sleep(15);
                  printf("Kindprozess (PID:%d) ist fertig!!\n"
                           ,getpid());
                  exit(i+1);
      default :   printf("Eltern mit PID %d von Kind mit PID %d\n"
                           ,getpid(),kind);
                  kind=wait(&status);
                  if(WIFSIGNALED(status) != SIGCHLD)
                     printf("SIGCHLD\n");
                   else
                     printf("NOCHLD\n");
                   sleep(1);
                   printf("Eltern mit PID %d fertig\n",getpid());
                   break;
    }
  }
 return 0;
}