C Gabel Umgang mit der globalen variable

Ich bin nicht zu verstehen, die Ausgabe dieses Programms:

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

int i = 0;

int main()
{
    while(i<3)
    {
        fork();

        printf("%d\n",i);
        ++i;
    }
}

Ausgabe:

0
1
2
2
1
2
0
1
2
2
2
1
2
2

Kann bitte mir jemand sagen, wie ich dieses Problem angehen, um vollständig zu verstehen, warum ich immer diese Ausgabe?

  • Sie haven T erzählte Sie uns, was Ihnen nicht gefällt.
  • Ich mag nicht, weil ich nicht verstehen, wenn wir incrementig die Gabel auf den übergeordneten Prozess oder in der Kinder-Prozesse. Normalerweise, wenn wir wollen die Erhöhung der Kind-Prozess, die wir tun if(fork()==0)++i; aber wenn wir es tun Gabel wie diese, ich bekomme ein wenig verloren in der Mitte!
  • Als pro-Antwort: Kind Schritten von Kind, Eltern-Schritten Eltern, nie die twain meed.
InformationsquelleAutor Bruno | 2010-01-28
Schreibe einen Kommentar