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

int main(int argc, char * argv[]) {
   int counter = 0 ;
   int ppid = getpid() ;
   int bpid ;
   int status ;

   while ( counter<5 ) {
      if ( (bpid=fork()) == 0 ) {
          /* child */
          printf("child: pid %d and counter %d\n", getpid(), counter) ;
          exit(0) ;
      }
      /* else parent */
      if ( wait(&status)!= bpid ) {
        printf("error: returned pid not child's\n" ) ;
      }
      printf("parent: child %d dies\n", bpid ) ;
 
      counter++ ;
   }
   printf("parent: process %d says bye-bye\n", ppid ) ;


}

