These are all the versions of exec that can be used in C (and C++)

execl execle execlp execv execve execvp

What's the difference between them? How do you know which one to use?