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 job 不是作业句柄。

ZX_ERR_ACCESS_DENIED job 没有相应的 ZX_RIGHT_WRITE 权限 (仅当非 ZX_HANDLE_INVALID 时)。

ZX_ERR_INVALID_ARGS nameproc_handlevmar_handle 是无效的指针。 或 options 包含无效的选项。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

ZX_ERR_BAD_STATE:作业对象处于终止状态。

另请参阅