%>

创建并执行进程。

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数

语法

intptr_t _spawnvp(
   int mode,
   const char *cmdname,
   const char *const *argv
);
intptr_t _wspawnvp(
   int mode,
   const wchar_t *cmdname,
   const wchar_t *const *argv
);

参数

mode
调用进程的执行模式。

cmdname
要执行的文件的路径。

argv
指向参数的指针的数组。 参数 argv[0] 通常是一个指向实际模式中的路径或保护模式中的程序的指针,从 argv[1]argv[n] 都是指向构成新参数列表的字符串的指针。 自变量 argv[n+1] 必须是一个 NULL 指针,用以标记自变量列表的末尾。

返回值

同步 _spawnvp_wspawnvp(为 _P_WAIT 指定的 mode)中的返回值是新进程的退出状态。 异步 _spawnvp_wspawnvp (为_P_NOWAIT 指定的 _P_NOWAITOmode)的返回值是进程句柄。 如果进程正常终止,则退出状态为 0。 如果生成进程专门使用非零参数调用 exit 例程,则可以将退出状态设置为一个非零值。 如果更新过程没有显式设置正退出状态,则正退出状态指示因中止或中断而异常退出。 返回值 -1 表示错误(未启动新进程)。 在这种情况下,errno 设置为下列值之一:

说明
E2BIG 参数列表超过 1024 个字节。
EINVAL mode 参数无效。
ENOENT 未找到文件或路径。
ENOEXEC 指定的文件不是可执行文件或者有无效的可执行文件格式。
ENOMEM 没有足够的内存可用于执行新进程。

有关返回代码的详细信息,请参阅 errno_doserrno_sys_errlist_sys_nerr

备注

这些函数中的每个函数都将创建并执行一个新进程,并传递指向命令行参数的指针数组并使用 PATH 环境变量查找要执行的文件。

这些函数验证其参数。 如果 cmdnameargv 是 null 指针,或者 argv 指向 null 指针或 argv[0] 是空字符串,则会调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些功能将 errno 设置为 EINVAL,并返回 -1。 不生成任何新进程。

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
_spawnvp <stdio.h> 或 <process.h>
_wspawnvp <stdio.h> 或 <wchar.h>

有关兼容性的详细信息,请参阅 兼容性

示例

请参阅 _spawn_wspawn 函数中的示例。

另请参阅

进程和环境控制
_spawn_wspawn 函数
abort
atexit
_exec_wexec 函数
.- .
_flushall
_getmbcp
%>
_setmbcp
%>