fork() tworzy nowy process i ten nowy process wykonuje operacje od "fork();" razem z głównym procesem.
Podejrzewam że "kot" pojawi się 4 razy.
Gdyż jak wykona się 1 raz fork() zwraca wartość 0, przez co wykonuje się kolejny fork po if'ie.
I jeszcze kolejny.
łącznie mamy 3 fork'i które wykonują "puts('kot')" i jeszcze jeden główny process. (łącznie 4 koty)
http://dnadesign.pl/2009/09/wspolbieznosc-w-c-fork/