Well yes, if you dont do an exec, then the child process is going to go on running as another copy of your parent process, at whatever point the if()else around the fork() call merges back into being one execution path.
exec() calls should be followed by an _exit() call, just to catch the case if an exec() should fail.