摘要
建立新程序。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_process_create(zx_handle_t job,
const char* name,
size_t name_size,
uint32_t options,
zx_handle_t* proc_handle,
zx_handle_t* vmar_handle);
說明
zx_process_create()
會建立新程序。
成功時,會處理新程序及其位址空間的根
。zx_process_start()
之後才會開始執行執行緒
物件。
系統會將 name 的字元截斷,而且不得超過 ZX_MAX_NAME_LEN-1
個字元。
當程序的最後一個控制代碼關閉時,該程序就會遭到刪除。
程序可能會等候,且會聲明訊號
程序結束時,ZX_PROCESS_TERMINATED
。
job 是控制新事件的工作物件 並成為該工作的子項。
options 可包含零或下列標記:
ZX_PROCESS_SHARED
:建立可與其他其他人共用位址空間的程序 上傳資料集之後,您可以運用 AutoML 自動完成部分資料準備工作使用此旗標建立的程序可傳遞至zx_process_create_shared()
。
權限
job 必須是 ZX_OBJ_TYPE_JOB
類型,且含有 ZX_RIGHT_MANAGE_PROCESS
。
呼叫端工作政策必須允許 ZX_POL_NEW_PROCESS
。
傳回值
成功時,zx_process_create()
會傳回 ZX_OK
,也就是新程序的控制代碼
(透過 proc_handle) 以及其位址空間根的控制代碼 (透過
vmar_handle)。如果失敗,系統會傳回負的錯誤值。
錯誤
ZX_ERR_BAD_HANDLE
job 不是有效的帳號代碼。
ZX_ERR_WRONG_TYPE
job 並非工作帳號。
ZX_ERR_ACCESS_DENIED
job 沒有正確的 ZX_RIGHT_WRITE
(僅限非 ZX_HANDLE_INVALID
時)。
ZX_ERR_INVALID_ARGS
name、proc_handle 或 vmar_handle 是無效的指標,
或 options 包含無效選項。
ZX_ERR_NO_MEMORY
因記憶體不足而失敗。
使用者空間無法妥善處理這種 (異常) 錯誤。
在日後的版本中不會再發生這個錯誤。
ZX_ERR_BAD_STATE
工作物件處於無效狀態。
另請參閱
zx_handle_close()
zx_handle_duplicate()
zx_job_create()
zx_object_wait_async()
zx_object_wait_many()
zx_object_wait_one()
zx_process_create_shared()
zx_process_start()
zx_task_kill()
zx_thread_create()
zx_thread_exit()
zx_thread_start()