eclaircissement sur fonctionnement programme c
Bonsoir à tous, j'aimerai avoir un petit éclaircissement sur le fonctionnement de mon programme c :
Voici le programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <stdio.h>
int i=10;
f() {printf("%d\n",i++);}
g() {f();fork();f();}
int main ()
{
g();g();
} |
Donc après compilation puis lancement (./test), j'obtiens :
Code:
1 2 3 4 5 6 7 8 9
| 10
11
12
13
11
12
13
13
13 |
J'ai envie de dire normal (vu mon programme).
Maintenant si je fais :
J'obtiens dans mon fichier toto :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 10
11
12
13
10
11
12
13
10
11
12
13
10
11
12
13 |
Enfin si je fais
J'obtiens Ma question est donc, pourquoi une telle différence dans ce qui est affiché dans mon terminal et ce qui se met dans le fichier toto ? Pourquoi mon wc affiche 16 et non 9 ?
Autant de questions qui me troublent :s