esercizio fork()
Sono alle prese con il seguente esercizio sulla fork():
Ho eseguito su due compilatori online:
su onlinegdb.com
ho come risposta
[5],0,0,0
[8],6,0,0
[7],6,0,8
[5],6,7,0
[9],0,0,0
[6],0,0,9
Mentre su ideone.com
ho come risposta
[15201],0,0,0
[15344],15342,0,0
[15201],0,0,0
[15343],15342,0,15344
[15201],0,0,0
[15201],15342,15343,0
[15201],0,0,0
[15345],0,0,0
[15201],0,0,0
[15342],0,0,15345
Quindi 6 stampe contro 10.
Guardando bene, nell'out di ideone.com si ripetono ben 4 out identici
[15201],0,0,0
che secondo me non ci dovrebbero stare, almeno credo, in quanto si riferiscono al processo padre iniziale.
Il resto dell'out lo comprendo (permette di capire come i diversi processi vengono eseguiti temporalmente) e i due compilatori forniscono lo stesso risultato, a parte l'id dei processi.
Ho eseguito più volte e l'out è risultato sempre lo stesso.
Avete una spiegazione per questi 4 out [15201],0,0,0 che non riesco a capire?
Grazie.
- Codice: Seleziona tutto
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(){
int ret1=0,ret2=0,ret3=0;
printf ("[%d],%d,%d,%d\n", getpid (),ret1,ret2,ret3);
(ret1=fork()) && (ret2=fork()) || (ret3=fork());
wait();
printf ("[%d],%d,%d,%d\n", getpid (), ret1, ret2, ret3);
}
Ho eseguito su due compilatori online:
su onlinegdb.com
ho come risposta
[5],0,0,0
[8],6,0,0
[7],6,0,8
[5],6,7,0
[9],0,0,0
[6],0,0,9
Mentre su ideone.com
ho come risposta
[15201],0,0,0
[15344],15342,0,0
[15201],0,0,0
[15343],15342,0,15344
[15201],0,0,0
[15201],15342,15343,0
[15201],0,0,0
[15345],0,0,0
[15201],0,0,0
[15342],0,0,15345
Quindi 6 stampe contro 10.
Guardando bene, nell'out di ideone.com si ripetono ben 4 out identici
[15201],0,0,0
che secondo me non ci dovrebbero stare, almeno credo, in quanto si riferiscono al processo padre iniziale.
Il resto dell'out lo comprendo (permette di capire come i diversi processi vengono eseguiti temporalmente) e i due compilatori forniscono lo stesso risultato, a parte l'id dei processi.
Ho eseguito più volte e l'out è risultato sempre lo stesso.
Avete una spiegazione per questi 4 out [15201],0,0,0 che non riesco a capire?
Grazie.