What is the difference between the functions of the exec family of system calls like exec and execve?

前端 未结 7 999
南笙
南笙 2020-12-13 06:17

I have been following a system programming course recently and I came through the system calls exec() and execve(). So far I cannot find a

7条回答
  •  眼角桃花
    2020-12-13 07:13

    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.

提交回复
热议问题