since exec() only returns in case of an error, it is a good idea to print out an error message and exit in that case
a child process terminates normally when the program invoked via exec ends
you can assume that those programs terminate properly
the shell must have a wait() or waitpid() for each child process in order to release them properly