I have been following a system programming course recently and I came through the system calls exec() and execve(). So far I cannot find any difference between these two, Even the Wikipedia does not give a clear explanation, so is there a difference between exec() and execve().
And someone please could give brief descriptions about exec family system calls such as execl(), execv(), execle(), execvp().
The arguments are different for these functions.
The function execl, execlp, and execle require each of the command line arguments to the new program to be specified as separate arguments.
The execv, execvp and execve, we have to build an array of pointers to the arguments, and the address of this array is the argument to these three functions.
The execve, execle functions allow us to pass the pointer to an array of pointers to the environment strings. The other four functions use the
environ
variable in the calling process to copy the existing environment to the program.p
means that the functions takes a file name argument and uses the PATH environment variable to find the executable file.l
means that the function takes a list of arguments and is mutually exclusive with the letterv
, which means that it takes an argv[] vector.The letter
e
means that the function takes anenvp[]
array instead of using the current environment.The new program inherits the following additional features from the calling process.