Load and execute new child processes.
int _execvp( const char *cmdname, const char *const *argv );
int _wexecvp( const wchar_t *cmdname, const wchar_t *const *argv );
Function | Required Header | Optional Headers | Compatibility |
_execvp | <process.h> | <errno.h> | Win 95, Win NT |
_wexecvp | <process.h> or <wchar.h> | <errno.h> | Win NT |
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB | Single thread static library, retail version |
LIBCMT.LIB | Multithread static library, retail version |
MSVCRT.LIB | Import library for MSVCRT.DLL, retail version |
Return Value
If successful, these functions do not return to the calling process. A return value of –1 indicates an error, in which case the errno global variable is set.
errno Value | Description |
E2BIG | The space required for the arguments and environment settings exceeds 32K. |
EACCES | The specified file has a locking or sharing violation. |
EMFILE | Too many files open (the specified file must be opened to determine whether it is executable). |
ENOENT | File or path not found. |
ENOEXEC | The specified file is not executable or has an invalid executable-file format. |
ENOMEM | Not enough memory is available to execute the new process; or the available memory has been corrupted; or an invalid block exists, indicating that the calling process was not allocated properly. |
Parameters
cmdname
Path of file to execute
argv
Array of pointers to parameters
Remarks
Each of these functions loads and executes a new process, passing an array of pointers to command-line arguments and using the PATH environment variable to find the file to execute.
Example
/* EXEC.C illustrates the different versions of exec including:
* _execl _execle _execlp _execlpe
* _execv _execve _execvp _execvpe
*
* Although EXEC.C can exec any program, you can verify how
* different versions handle arguments and environment by
* compiling and specifying the sample program ARGS.C. See
* SPAWN.C for examples of the similar spawn functions.
*/
#include <stdio.h>
#include <conio.h>
#include <process.h>
char *my_env[] = /* Environment for exec?e */
{
"THIS=environment will be",
"PASSED=to new process by",
"the EXEC=functions",
NULL
};
void main()
{
char *args[4], prog[80];
int ch;
printf( "Enter name of program to exec: " );
gets( prog );
printf( " 1. _execl 2. _execle 3. _execlp 4. _execlpe\n" );
printf( " 5. _execv 6. _execve 7. _execvp 8. _execvpe\n" );
printf( "Type a number from 1 to 8 (or 0 to quit): " );
ch = _getche();
if( (ch < '1') || (ch > '8') )
exit( 1 );
printf( "\n\n" );
/* Arguments for _execv? */
args[0] = prog;
args[1] = "exec??";
args[2] = "two";
args[3] = NULL;
switch( ch )
{
case '1':
_execl( prog, prog, "_execl", "two", NULL );
break;
case '2':
_execle( prog, prog, "_execle", "two", NULL, my_env );
break;
case '3':
_execlp( prog, prog, "_execlp", "two", NULL );
break;
case '4':
_execlpe( prog, prog, "_execlpe", "two", NULL, my_env );
break;
case '5':
_execv( prog, args );
break;
case '6':
_execve( prog, args, my_env );
break;
case '7':
_execvp( prog, args );
break;
case '8':
_execvpe( prog, args, my_env );
break;
default:
break;
}
/* This point is reached only if exec fails. */
printf( "\nProcess was not execed." );
exit( 0 );
}
Process and Environment Control Routines | _exec, _wexec_Function Overview
See Also abort, atexit, exit, _onexit, _spawn Function Overview, system