process - Trouble Understanding Fork Logic -
can me understand happening in segment of code? having trouble understanding why output how is. output is:
0 1 2 3 4
3
2
1
0
int main() { int i; (i = 0; < 5 && !fork(); i++) { fflush(stdout); printf("%d ", i); } wait(null); printf("\n"); return 0; }
two things here:
first, fork()
return 0
in child process while returns non 0 pid parent process.
second, short circuit of &&
.
so in beginning of first process (p0), runs i < 5 && !fork()
. i = 0
, process created (p1). p0, test !fork()
fails, ends loop , waiting child end. p1, test succeeds, , print out 0
, increment i
1, create process p2 , goes out loop p0 did.
because of short circuiting, when i
equals 5, no more fork
called.
Comments
Post a Comment