Intanto usa nomi differenti
codice:
gcc -o es1 es1.c
gcc -o es1figlio esi.figlio.c
codice:
if((pid=fork())<0) 
  perror("errore nella fork()");
if (pid == 0)
  {
     if(execl("./es1figlio","es1figlio", (char*)0) == -1)
       perror("execl");
  }
Prova cosi... almeno se fallisce ti da un messaggio di errore piu specifico...