Ho una problema secondo me con la fork che nn capisco bene cosa faccia, allora il programma ottiene da input il valore di quanti processi deve creare, ogni processo stampa su output chi è e poi muore. Il mio probelma, che ho in tutti i programmi in cui ho un numero di processi figli superiore a 1 è questo:
quando il padre va a fare else printf("\nCreato Figlio con PID %d",pid);
mi scrive sia Creafto Figlio con pid del figlio precedente e poi anche Creato Figlio del pid del figlio attuale:
faccio copia e incolla di uno stdout con 3 figli...
Sono il figlio n: 1
Creato Figlio con PID 6605
Sono il figlio n: 2Creato Figlio con PID 6605
Creato Figlio con PID 6606
Sono il figlio n: 3Creato Figlio con PID 6606
Creato Figlio con PID 6607
Processo [6605] Terminato
Processo [6606] Terminato
Processo [6607] Terminato
Qualcuno ha la piu pallida idea di perke faccia cosi? io nn riesco a darmi pace non trovo il motivo...anche col debug lo fa e nn capisco..
-------------------CODICE---------------
/* INTERFACCIA FORK */
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
void figlio(int i);
void main(int argc,char **argv){
int a= 0;
int pid;
int status;
int nfigli;
if (argc <2){printf ("Errore numero parametri passato errato\n");
exit (1);
}
nfigli= atoi(argv[1]);
for (a=0;a<nfigli;a++){
pid =fork();
if (pid == 0){//Figlio
figlio(a);
} //Padre
else printf("\nCreato Figlio con PID %d",pid);
}
for(a=0;a<nfigli;a++){
pid=wait(&status);
printf("\nProcesso [%d] Terminato ",pid);
}
exit (0);
}
void figlio(int i){
printf("\nSono il figlio n: %d",i+1);
exit (0);
}