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

#define is_child(P) P == 0

main() {
  sinc_fib10();
  exit(0);
}

void sinc_fib10() 
{
  pid_t new_proc;                                       
  int status;                                          
                                                         
  new_proc = fork();                                     
  if (is_child(new_proc))                 
    exit(fibonacci(10));                             
  else {                                  
    wait(&status);
    if (WIFEXITED(status)) {
       printf("PAI: fib(10) = %d\n",WEXITSTATUS(status));
    }
    else {
       printf("Child did not terminate normally");
    }
  }
  return;
}

int fibonacci(int n)        
{                             
    if (n==0) return 1;       
    if (n==1) return 1;       
    return fibonacci(n-1) +   
          fibonacci(n-2);     
}                             
