/*Beispiel 2 mit Rückgabewert*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(int argc, char **argv)
{
 pid_t kind1;
 int status;

 while(1)
  {
   switch(kind1=fork())
    {
     case -1 :  printf("Fehler bei fork()..........\n");  exit(0);
     case 0  :  sleep(5);
                printf("Kindprozess ist fertig!!\n\n");
                exit(1);
     default :  printf("Elternprozess schläft 30 sec.\n");
                kind1=wait(&status);
                printf("Eltern : Kind mit PID: %d ",kind1);
                if(WIFEXITED(status) !=0)
                  printf("wurde mit status %d beendet\n",WEXITSTATUS(status));
                else
                  printf("wurde anormal beendet\n");
                sleep(30);
                printf("Elternprozess ist fertig\n");
                exit(2);
    }
 }
 return 0;
}