What is the difference between the functions of th

2019-02-03 04:33发布

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().

7条回答
趁早两清
2楼-- · 2019-02-03 05:04

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.

  • The letter p means that the functions takes a file name argument and uses the PATH environment variable to find the executable file.
  • The letter l means that the function takes a list of arguments and is mutually exclusive with the letter v, which means that it takes an argv[] vector.
  • The letter e means that the function takes an envp[] array instead of using the current environment.

  • The new program inherits the following additional features from the calling process.

    Process ID and the Parent Process ID
    Real user ID and Real Group ID
    Supplementary group IDs
    Process group ID
    Session ID
    Controlling terminal
    Time left until alarm clock
    Current working directory
    Root directory
    File mode creation mask
    File locks
    Process signal mask
    Pending signals
    Resource limits
    Values for tms_utime, tms_stime, tms_cutime, and tms_cstime.
  • The real user ID and the real group ID remain the same across the exec but the effective IDs can change, depending on the status of the set-user-id and the set-group-id bits for the program file executed.
查看更多
登录 后发表回答