- 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.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



