/*Beispiel WIFSIGNALED*/

#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(20);
                 printf("Kindprozess ist fertig!!\n\n");
                 exit(1);
     default :   printf("Elternprozess schläft 30 sec.\n");
                 kind1=wait(&status);
                 printf("Eltern : Kind mit %d ",kind1);
                 if(WIFSIGNALED(status) !=SIGCHLD)
                   printf("wurde mit status %d beendet\n",WTERMSIG(status));
                 else
                   printf("wurde anormal beendet\n");
                 sleep(30);
                 printf("Elternprozess ist fertig\n");
                 exit(2);
    }
  }
 return 0;
}