zx_process_create

摘要

建立新程序。

宣告

#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 可建立程序,以便與其他程序共用其位址空間。使用這個旗標建立的程序可傳遞至 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 工作不是工作帳號代碼。

ZX_ERR_ACCESS_DENIED 工作沒有 ZX_RIGHT_WRITE 正確 (只有 ZX_HANDLE_INVALID 時)。

ZX_ERR_INVALID_ARGS nameproc_handlevmar_handle 是無效指標,或是 options 包含無效選項。

ZX_ERR_NO_MEMORY 因記憶體不足而失敗。使用者空間無法以任何方式處理這個錯誤 (極可能) 錯誤。日後的建構作業不會再發生這個錯誤。

ZX_ERR_BAD_STATE:工作物件處於無效狀態。

另請參閱