zx_process_create


英文原文快照


名称

process_create —— 创建新进程

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_process_create(zx_handle_t job, const char* name, size_t name_size,
  3. uint32_t options, zx_handle_t* proc_handle,
  4. zx_handle_t* vmar_handle);

描述

process_create() 的功能是创建新的进程

执行成功后,将返回新进程的句柄以及其根地址空间。 但在调用process_start() 之前,线程不会开始执行。

name以静默的方式被截断为最多ZX_MAX_NAME_LEN-1个字符。

当指向进程的最后一个句柄被关闭时,该进程将被销毁。

进程句柄可以被用于等待,并在进程退出时发出ZX_PROCESS_TERMINATED信号。

job是控制新进程的作业对象,新进程将成为该作业的子进程。

权限

TODO(ZX-2399)

返回值

process_create() 调用成功则返回ZX_OK和(通过proc_handle)返回新进程的句柄,以及(通过vmar_handle)返回其根地址空间。如果调用失败,则返回负的错误码。

错误码

ZX_ERR_BAD_HANDLEjob是无效句柄。

ZX_ERR_WRONG_TYPEjob不是作业类型的句柄。

ZX_ERR_ACCESS_DENIEDjob没有ZX_RIGHT_WRITE权限(仅当job不是ZX_HANDLE_INVALID的条件下)。

ZX_ERR_INVALID_ARGSnameproc_handlevmar_handle是无效指针或options是非零值。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。

ZX_ERR_BAD_STATEjob作业对象处于已死亡状态。

另见

handle_close, handle_duplicate, object_wait_one, object_wait_many, process_start, task_kill, thread_create, thread_exit, thread_start, job_create.