摘要
建立新程序。
宣告
#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
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()