One version of the exec system calls is:
#include <unistd.h> int execvp(char *file, char* args[])
file - the name of the executable file. The 'p' means that all directories in the PATH evironment variable will be searched for the first occurrence of file.
args - this will be passed to the main function of file as argv. But args should have one extra entry which is NULL, so that execvp can count the number of elements in the array and pass this count to main as argc