Also check out popen() -- unless you are supposed to use exec(), of course.
If you use system() inside the fork, you can wait for the process to return. Because it's forked, it will still be a "background" process; the parent is not held up by the child (and the child is not doing anything else anyway). It is not as if exec were an advanced feature and system a simple one provided for beginners ;) They do serve slightly different purposes.