ho realizzato un piccolo programmino che crea n processi, i processi figli vengono inizializzati in una struttara dati.

codice:
#include <sys/types.h> /* pid_t */
#include <sys/wait.h>
#include <unistd.h>    /* fork */
#include <stdio.h>
#include <stdlib.h>    /* exit */
typedef struct {
  
  char *nome;
  int eta;
  int cod;
}Persona;
static int count=0;
int main (){
  
  pid_t child;
  Persona p[100];
  int i;//count=0;
  for (i=0;i<4;i++){
    child=fork();
    if (child==-1)
      perror("errore");
    
    if (child==0){
      fprintf(stdout,"Esecuzione del figlio %d\n",i);
      count++;
      p[i].cod=getpid();
      p[i].nome="pino";
      p[i].eta=40+i;
     // fprintf(stderr,"nome: %s, eta: %d cod= %ld\n",p[i].nome,p[i].eta,(long)p[i].cod);
      exit(i);
    }
    else {
      int status;
     wait(&status);
      fprintf(stdout,"sono il padre %d\n",i);
      
    }
      
    
  }
   fprintf(stdout," count: %d ",i);
   
  for (i=0;i<1;i++){
    //fprintf(stderr,"nome: %s, eta: %d cod= %ld\n",p[i].nome,p[i].eta,(long)p[i].cod);
    fprintf(stdout," count: %d ",count);
  }
    
  return 0;
}
Alla fine del ciclo for stampa count sempre 0 mentre la variabile i 4 errore di segmentazione per la stampa della struttura.
Ho notato che la stampa della struttara funziona solo nel ciclo while ovvero quando viene creato il processo ed inizializzato.
Come posso tenere traccia dei processi precedentemente inizializzati anche se hanno terminato la loro esecuzione