%>
创建并执行更新过程。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
intptr_t _spawnve(
int mode,
const char *cmdname,
const char *const *argv,
const char *const *envp
);
intptr_t _wspawnve(
int mode,
const wchar_t *cmdname,
const wchar_t *const *argv,
const wchar_t *const *envp
);
参数
mode
调用进程的执行模式。
cmdname
要执行的文件的路径。
argv
指向参数的指针的数组。 参数 argv[0]
通常是一个指向实际模式中的路径或保护模式中的程序的指针,从 argv[1]
到 argv[n]
都是指向构成新参数列表的字符串的指针。 自变量 argv[n+1]
必须是一个 NULL
指针,用以标记自变量列表的末尾。
envp
指向环境设置的指针的数组。
返回值
同步 _spawnve
或 _wspawnve
(为 _P_WAIT
指定的 mode
)中的返回值是新进程的退出状态。 异步 _spawnve
或 _wspawnve
(为_P_NOWAIT
指定的 _P_NOWAITO
或 mode
)的返回值是进程句柄。 如果进程正常终止,则退出状态为 0。 如果生成的进程专门调用具有非零参数的 exit
例程,则可以将退出状态设置为一个非零值。 如果更新过程没有显式设置正退出状态,则正退出状态指示因中止或中断而异常退出。 返回值 -1 表示错误(未启动新进程)。 在这种情况下,errno
设置为下列值之一。
值 | 说明 |
---|---|
E2BIG |
参数列表超过 1024 个字节。 |
EINVAL |
mode 参数无效。 |
ENOENT |
未找到文件或路径。 |
ENOEXEC |
指定的文件不是可执行文件或者有无效的可执行文件格式。 |
ENOMEM |
没有足够的内存可用于执行新进程。 |
有关这些和其他的返回代码的详细信息,请参阅 errno
、_doserrno
、_sys_errlist
和 _sys_nerr
。
注解
所有这些函数将创建并执行一个新进程,同时将一个指针数组传递给命令行自变量,并将一个指针数组传递给环境设置。
这些函数验证其参数。 如果 cmdname
或 argv
是 null 指针,或者 argv
指向 null 指针或 argv[0]
是空字符串,则会调用无效的参数处理程序,如参数验证中所述。 如果允许执行继续,则这些功能将 errno
设置为 EINVAL
,并返回 -1。 不生成任何新进程。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
例程 | 必需的标头 |
---|---|
_spawnve |
<stdio.h> 或 <process.h> |
_wspawnve |
<stdio.h> 或 <wchar.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
请参阅 _spawn
、_wspawn
函数中的示例。
另请参阅
进程和环境控制
_spawn
、_wspawn
函数
abort
atexit
_exec
、_wexec
函数
.- .
_flushall
_getmbcp
%>
_setmbcp
%>