Это что-то вроде ...
1 (main) instance, i = 0(unforked)
fork() > 2 instances, with i's = 0(forked), and 0(forked)
0 output from main instance, increments its i, 2 instances with i = 1u, 0f
main instance forks, there's 3 instances with i's 1f, 1f, 0f
1 output from main instance, increments its i, 3 instances with i = 2u, 1f, 0f
main instance forks, there's 4 instances with i's 2f, 2f, 1f, 0f
2 output from main instance, increments its i, 4 instances with i = 3u, 2f, 1f, 0f
main instance then dies, 3 instances with i = 2f, 1f, 0f
2 output from next instance, increments its i, 3 instances with i = 3u, 1f, 0f
next instance then dies, 2 instances with i = 1f, 0f
1 output from next instance, increments its i to 2, 2 instances with i = 2u, 0f
... и т.д.
Порядок, в котором выводятся процессы, однако, не определен, поэтому вы, скорее всего, не будете видеть один и тот же вывод каждый раз, и даже если вы сделаете это, вы не сможете гарантировать.
Как говорили другие люди, у каждого процесса есть свое собственное глобальное i, которое он отслеживает, и его значением является просто значение процесса разветвления i на развилке.