Why running a new program is done using the fork() and exec() system calls? why a different API wasn't developed where there is one call to run a new program?
Answer
This way provides a lot of flexibility. It allows the shell for example, to run code after the call to fork() but before the call to exec(). Such code can be used to alter the environment of the program it about to run.