c - Counting processes after fork in for loop -
i have following code:
for(i=1; i<=2; i++) { fork(); printf("x "); }
i calculated x should printed out 6 times: twice in first iteration , 4 times in second.
instead, x printed 8 times. why?
because of buffering. usually, stdout
line-buffered, so
printf("x ");
doesn't write "x "
terminal output buffer. copied when process fork()
s, each of 4 processes after second iteration has 2 "x "
in output buffer [one parent/before forking in first iteration, 1 second iteration] when exits , 8 x
s printed altogether.
flush buffer after printf("x ");
, 6 printed.
Comments
Post a Comment