Bonsoir à tous, j'aimerai avoir un petit éclaircissement sur le fonctionnement de mon programme c :
Voici le programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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