자식프로세스 생성하는데 문제가발생해요

일단 코드는
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int g =2;

int main(void)
{
pid_t pid;
int l = 3;

printf("PID(%d): Parent g=%d, l=%d \n",getpid(),g,l);

if((pid=fork())<0){
perror("fork error");
exit(1);
}else if(pid ==0){
g++;
l++;
printf("PID(%d): Child \n",getpid());
}else{
printf("PID(%d): Parent \n",getpid());
}

printf("PID(%d): g=%d, l=%d \n",getpid(),g,l);

return 0;
}

이런 코드인데요

실행화면이
PID 부모 G=2 L=3
PID 자식
PID G=3 L=4
PID 부모
PID G=2 L=3

이게 정상이라고 책에서 알려주고있거든요!?? 근데 실제 제 실행화면은

jinsung@ubuntu:~/Desktop/Linux_Kernel_Internal$ ./fork
PID(17780): Parent g=2, l=3
PID(17780): Parent
PID(17780): g=2, l=3
jinsung@ubuntu:~/Desktop/Linux_Kernel_Internal$ PID(17781): Child
PID(17781): g=3, l=4

이런식으로 나옴니다
중간에 CHILD 부분에서 한번 멈춰서 제가 엔터를 누르면 바로밑에 g3 l4나오구요
다른 프로그램도 코딩해봤는데 자식프로세서만 나오면 저런식으로 꼬입니다
ㅇ어떤건 완전히 먹통되서 루프도 없는데 자식프로세스를 계속 몇백 몇천개 리턴걸릴때까지 만들기도하구요
도대체 뭐가문제일까요? ㅠㅠ…도와주세요~~

[code:2bpsuurk]
yemharc@metapholize:~/dev$ gcc test.c
yemharc@metapholize:~/dev$ ls
a.out android-sdk linux-2.6.38 test.c
yemharc@metapholize:~/dev$ ./a.out
PID(7192): Parent g=2, l=3
PID(7192): Parent
PID(7192): g=2, l=3
PID(7193): Child
PID(7193): g=3, l=4
yemharc@metapholize:~/dev$
[/code:2bpsuurk]

…음. 뭔가 제가 재현(?)한 방식에서 틀린 점이 있다면 답글 달아주세요.
코드는 포스팅의 코드를 그대로 가져다 사용했습니다.