Share on Facebook Share on Twitter Email
Answers.com

Exec

 
Wikipedia: Exec (operating system)

The exec functions of Unix-like operating systems are a collection of functions that causes the running process to be completely replaced by the program passed as an argument to the function. As a new process is not created, the process ID (PID) does not change across an execute, but the data, heap and stack of the calling process are replaced by those of the new process.

In the execl, execlp, execv, and execvp calls, the child process inherits the parent's environment.

Files open when an exec call is made remain open in the new process. All open files must be flushed before an exec call. The exec calls do not preserve the translation modes of open files. If the child process uses files inherited from the parent, setmode function can be called to set the translation mode to the desired mode.

In MS-DOS environments, a program executed with one of the exec functions is always loaded into memory as if the "maximum allocation" in the program's executable file header is set to default value 0xFFFF. The EXEHDR utility can be used to change the maximum allocation field of a program. However, if this is done and the program is invoked with one of the exec functions, the program might behave differently from a program invoked directly from the operating-system command line or with one of the spawn functions.

Many Unix shells also offer an "exec" built-in command that replaces the shell process with the specified program.[1] "Wrapper" scripts often use this command to run a program (either directly or through an interpreter or virtual machine) after setting environment variables or other configuration. By using exec, the resources used by the shell program do not need to stay in use after the program is started. [2]

Contents

Prototypes

The functions are declared in unistd.h for POSIX standard and in process.h for DOS, OS/2, Windows.

int execl(char const *path, char const *arg0, ...);
int execle(char const *path, char const *arg0, ..., char const * const *envp);
int execlp(char const *path, char const *arg0, ...);
int execlpe(char const *path, char const *arg0, ...);
int execv(char const *path, char const * const * argv);
int execve(char const *path, char const * const *argv, char const * const *envp);
int execvp(char const *path, char const * const *argv);
int execvpe(char const *path, char const * const *argv, char const * const *envp);
  • Note: Some implementations provide these functions named with a leading underscore (e.g. _execl).

Function names

The base of each function is exec, followed by one or more letters:

e - An array of pointers to environment arguments is explicitly passed to the child process.
l - Command-line arguments are passed individually to the function.
p - Uses the path environment variable to find the file named in the path argument to be executed.
v - Command-line arguments are passed to the function as an array of pointers.

path

The path argument specifies the path name of the file to execute as a child process. Arguments arg0 through argn are a list of pointers to arguments to be passed to the child process. argv is an array of pointers to arguments.

arg0

The first argument arg0 should be the name of the executable file. Usually it is the same value as the path argument. Some programs may incorrectly rely on this argument providing the location of the executable, but there is no guarantee of this nor is it standardized across platforms.

envp

Argument envp is an array of pointers to environment settings. The execle, execlpe, execve, and execvpe calls alter the environment for the child process by passing a list of environment settings through the envp argument. This argument is an array of character pointers; each element (except for the final element) points to a null-terminated string defining an environment variable.

Each null-terminated string has the form:

name=value

where name is the environment variable name, and value is the value of that that variable. The final element of the envp array must be null. If envp itself is null, the child process inherits the environment settings of the parent process.

Return Value

The exec functions do not normally return to the calling process. If an exec function returns, an error occurred, the return value is -1, and errno is set to one of the following values:

Name Notes
E2BIG The argument list exceeds the system limit.
EACCES The specified file has a locking or sharing violation.
ENOENT The file or path name not found.
ENOMEM Not enough memory is available to execute the child process.

See also

References

  1. ^ http://www.gnu.org/software/bash/manual/bashref.html#IDX74 - "exec" built-in command in bash manual
  2. ^ http://tldp.org/LDP/abs/html/wrapper.html

External links


Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
 
 

 

Copyrights:

Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "Exec (operating system)" Read more