ho realizzato un piccolo programmino che crea n processi, i processi figli vengono inizializzati in una struttara dati.
Alla fine del ciclo for stampa count sempre 0 mentre la variabile i 4 errore di segmentazione per la stampa della struttura.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; }
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

Rispondi quotando