Share via


_spawnlpe、_wspawnlpe

重要

此 API 不能用于在 Windows 运行时 中执行的应用程序。有关更多信息,请参见不支持 /ZW 的 CRT 函数

intptr_t _spawnlpe(
   int mode,
   const char *cmdname,
   const char *arg0,
   const char *arg1,
   ... const char *argn,
   NULL,
   const char *const *envp 
);
intptr_t _wspawnlpe(
   int mode,
   const wchar_t *cmdname,
   const wchar_t *arg0,
   const wchar_t *arg1,
   ... const wchar_t *argn,
   NULL,
   const wchar_t *const *envp 
);

参数

  • mode
    调用进程的执行模式。

  • cmdname
    要执行的文件的路径。

  • arg0, arg1, ... argn
    指向参数的指针的列表。 arg0 参数通常是指向 cmdname。 参数arg1 通过指向字符串的 argn指针形成新的参数列表。 在 argn 之后,必须是一个 NULL 指针,用以标记参数列表的末尾。

  • envp
    指向环境设置的指针的数组。

返回值

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

  • E2BIG
    参数列表超过 1024 个字节。

  • EINVAL
    mode 参数无效。

  • ENOENT
    未找到文件或路径。

  • ENOEXEC
    指定的文件不是可执行文件或者有无效的可执行文件格式。

  • ENOMEM
    没有足够的内存可用于执行新进程。

有关这些属性和其他的更多信息返回代码示例,请参见 errno、_doserrno、_sys_errlist 和 _sys_nerr

备注

每一个函数创造并且执行一个新的进程,把每一个命令行的参数作为独立的参数进行传递,并且传递一个数组指针给环境设置。 这些函数使用 PATH 环境变量查找要执行的文件。

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

要求

例程

必需的标头

_spawnlpe

<process.h>

_wspawnlpe

<stdio.h> 或 <wchar.h>

有关更多兼容性信息,请参见兼容性

示例

请参见 _spawn、_wspawn 函数中的示例。

.NET Framework 等效项

请参见

参考

进程和环境控制

_spawn、_wspawn 函数

abort

atexit

_exec、_wexec 函数

exit、_exit

_flushall

_getmbcp

_onexit、_onexit_m

_setmbcp

system、_wsystem