zx_process_create
名称
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);
描述
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_HANDLE:job是无效句柄。
ZX_ERR_WRONG_TYPE:job不是作业类型的句柄。
ZX_ERR_ACCESS_DENIED:job没有ZX_RIGHT_WRITE权限(仅当job不是ZX_HANDLE_INVALID的条件下)。
ZX_ERR_INVALID_ARGS:name,proc_handle或vmar_handle是无效指针或options是非零值。
ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。
ZX_ERR_BAD_STATE:job作业对象处于已死亡状态。
另见
handle_close, handle_duplicate, object_wait_one, object_wait_many, process_start, task_kill, thread_create, thread_exit, thread_start, job_create.