avrei un problema da risolvere.devo svolgere questo esercizio

Implementare il seguente problema: Un processo padre genera un processo figlio e un processo fratello.
Il figlio a sua volta genera un processo nipote.
Ciascun processo stampa a schermo il proprio pid e il pid del processo che l'ha generato
e si mette in attesa della morte del figlio (qualora ne abbia)

io inizio impostando il primo pezzo di esercizio

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

int main (int argc, char *argv[])
{
	pid_t child_pid[1]; //Pid Figli
	pid_t nephew_pid[1]; //Pid Nipoti generati dai figli
	int i,stat_val;
	
	printf("Inizio programma\n");
	
	printf("Main Process PID= %d\n", (int) getpid());
	
	for (i=0; i<2; i++) // durante il secondo ciclo la fork viene eseguita sia dal processo padre sia dal processo figlio creato tramite il primo ciclo creando così 3 processi
	{
		child_pid[i]=fork();
		
		if(child_pid<0)
			perror("chiamata a fork fallita\n");
		else if(child_pid[i]!=0) // Mi trovo nel contesto del padre
			printf("Figlio: PID=[%d] generato dal Padre: PID[%d]\n", child_pid[i], (int) getpid());	
	}
	

	for(i=0; i<2; i++){
	if(child_pid[i]!=0){
		pid_t child_pid=wait(&stat_val);
	}
	}
}
purtroppo come risultato ottengo tre processi figli anziché due.questo perché durante il secondo ciclo il processo forka il padre ed il primo processo figlio creato in precedenza.ottenendo così quattro processi: il processo padre.due processi figli ed un processo nipote del primo processo figlio creato.

io vorrei invece ottenere solamente due processi figli e basta.chi mi può aiutare?