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 作业没有 ZX_RIGHT_WRITE 权限(仅当没有 ZX_HANDLE_INVALID 时)。

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

ZX_ERR_NO_MEMORY 由于内存不足而失败。 用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。

ZX_ERR_BAD_STATE:作业对象处于不活跃状态。

另请参阅