摘要
创建一个新进程。
声明
#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
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()