[C++] Processo padre che crea 2 figli
Inviato: venerdì 9 maggio 2014, 10:50
Quello che segue è un codice dove 2 processi figli si riferiscono allo stesso padre.
Lo so che il tutto avviene tramite la chiamata di sistema "fork", ma quello che non riesco a capire è che se nel codice del figlio inserisco i 2 figli si riferiscono allo stesso padre, mentre se non vi è quella funzione ad ogni fork vengono creati un processo padre col proprio figlio cosa alquanto ragionevole.
Codice: Seleziona tutto
#include <iostream>
#include <cstdlib>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
using namespace std;
int main()
{
pid_t pid;
int i=0,st;
for(i=0;i<2;i++)
{
try
{
pid=fork();
}
catch(pid_t err)
{
if(err==-1)
cout<<"Fork fallita!"<<endl;
exit(-1);
}
if(pid > 0)
{
cout<<"Sono il processo padre con pid "<<getpid()<<endl;
cout<<"Pid di mio padre "<<getppid()<<endl;
wait(&st);
cout<<"Mio figlio ha terminato l'esecuzione con stato "<<st<<endl;
}
else
{
cout<<"Sono il processo figlio con pid "<<getpid()<<endl;
cout<<"Pid di mio padre "<<getppid()<<endl;
exit(0);
}
}
return 0;
}
Codice: Seleziona tutto
exit(0)