_spawnve
, _wspawnve
建立和執行新處理序。
重要
這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 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]
是形成新引數清單的字元字串指標。 引數必須是 NULL
標記引數 argv[n+1]
清單結尾的指標。
envp
環境設定的指標陣列。
傳回值
同步 _spawnve
或 _wspawnve
(為 mode
指定的 _P_WAIT
) 的傳回值是新處理序的結束狀態。 非同步 _spawnve
或 _wspawnve
(為_P_NOWAIT
指定的 _P_NOWAITO
或 mode
) 的傳回值是處理序控制代碼。 如果處理序正常終止,結束狀態為 0。 如果繁衍的處理序會用非零的引數明確呼叫 exit
常式,您就可以將結束狀態設為非零值。 如果新進程未明確設定正結束狀態,則正結束狀態表示中止或中斷異常結束。 -1 的傳回值表示錯誤(未啟動新進程)。 在這種情況下, errno
會設為下列其中一個值。
值 | Description |
---|---|
E2BIG |
引數清單超過 1024 個位元組。 |
EINVAL |
mode 引數無效。 |
ENOENT |
找不到檔案或路徑。 |
ENOEXEC |
指定的檔案不是可執行檔,或具有不正確可執行檔案格式。 |
ENOMEM |
可用記憶體不足,無法執行新處理序。 |
如需這些傳回碼和其他傳回碼的詳細資訊,請參閱 errno
、 _sys_errlist
_doserrno
和 _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
函式
exit
, _Exit
, _exit
_flushall
_getmbcp
_onexit
, _onexit_m
_setmbcp
system
, _wsystem
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應