#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.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);
                 while(kind=waitpid(kind, &status, WNOHANG)==0)
                  {
                   sleep(1);
                   printf("Eltern mit PID %d fertig\n",getpid());
                  }
                 break;
    }
  }
 return 0;
}