_spawnvp、_wspawnvp
创建一个进程并执行它。
重要
此 API 不能用于在 Windows 运行时 中执行的应用程序。有关更多信息,请参见不支持 /ZW 的 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 (为 mode指定的_P_WAIT) 的返回值是更新过程的退出状态。 异步 _spawnvp 或 _wspawnvp 的返回值 (为 mode指定的 _P_NOWAITO或_P_NOWAIT ) 是处理句柄。 如果进程正常终止,则退出状态为 0。 如果生成的进程专门调用具有非零参数的 exit 例程,则可以将退出状态设置为一个非零值。 如果更新过程没有显式设置正退出状态,则正退出状态指示因中止或中断而异常退出。 返回值 –1 表示错误 (不启动新过程)。 在这种情况下,errno 设置为下列值之一:
E2BIG
参数列表超过 1024 个字节。EINVAL
mode 参数无效。ENOENT
未找到文件或路径。ENOEXEC
指定的文件不是可执行文件或者有无效的可执行文件格式。ENOMEM
没有足够的内存可用于执行新进程。
有关这些属性和其他的更多信息返回代码示例,请参见 errno、_doserrno、_sys_errlist 和 _sys_nerr。
备注
这些函数中的每个创建一个新进程并执行新它,通过传递指针数组到命令行参数并使用 PATH 环境变量查找文件执行。
这些函数验证其参数。 如果 cmdname 或 argv 是空指针,或者,如果 argv 指向空指针或 argv[0] 是空字符串,调用无效参数处理程序,如 参数验证所述。 如果允许执行继续,则这些功能将 EINVAL 设置为 errno,并返回 -1。 不生成任何新进程。
要求
例程 |
必需的标头 |
---|---|
_spawnvp |
<stdio.h> or <process.h> |
_wspawnvp |
<stdio.h> 或 <wchar.h> |
有关其他兼容性信息,请参见兼容性。
示例
请参见 _spawn、_wspawn 函数中的示例。