Load and execute new child processes.
int_execvp(constchar*cmdname,constchar*const*argv);
int_wexecvp(constwchar_t*cmdname,constwchar_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