Nous devons dire les résultats du programme C:Résultat d'un petit programme C
main()
{
int pid, k, som;
som = 0; k = 2;
pid = fork();
if(pid == 0)
k=5;
else
wait(0);
for(int i = 1; i <= k; i++)
som += i;
printf("%d", som);
}
Ma première attente est 3. Lorsqu'un appel de la fourche est faite, la mémoire du processus est copié, et les deux programmes fonctionnent. Le processus enfant s'exécute alors, mais k est toujours égal à 2. Donc, à la fin, il exécute 1 + 2 = 3;
Mais quand ce programme est exécuté, il produit 153. Je n'ai pas l'indice le plus proche pourquoi il sort cela.
Quelqu'un peut-il dire pourquoi?
biensur. Totaly a oublié que les deux processus produisent des résultats. – Ikke
Je crois que vous avez raison. Vous pouvez rapidement discerner si c'est le cas en changeant la dernière ligne du programme à: printf ("% d \ n", som); – LBushkin