摘要
创建一个可以与其他进程共享部分地址空间的新进程。
声明
#include <zircon/syscalls.h>
zx_status_t zx_process_create_shared(zx_handle_t shared_proc,
uint32_t options,
const char* name,
size_t name_size,
zx_handle_t* proc_handle,
zx_handle_t* restricted_vmar_handle);
说明
zx_process_create_shared() 会创建一个新进程,该进程与 shared_proc 共享部分地址空间。创建的进程将添加到与 shared_proc 相同的作业中。
所创建进程的初始 ZX_PROP_PROCESS_* 属性将与 shared_proc 的属性一致。
shared_proc 必须是使用 ZX_PROCESS_SHARED 或通过 zx_process_create_shared() 创建的。
所创建进程的地址空间分为两部分:与 shared_proc 共享的共享部分,以及所创建进程专用的受限部分。进程中的每个线程都从共享部分处于活动状态时开始执行。
如需了解详情,请参阅 zx_process_create()。
权限
shared_proc 必须是 ZX_OBJ_TYPE_PROCESS 类型,并且具有 ZX_RIGHT_MANAGE_PROCESS 和 ZX_RIGHT_GET_PROPERTY。
返回值
如果成功,zx_process_create_shared() 会返回 ZX_OK(新进程的句柄,通过 proc_handle)、受限地址空间的根的句柄(通过 restricted_vmar_handle)。如果失败,则返回负错误值。
如需了解详情,请参阅 zx_process_create()。
错误
ZX_ERR_INVALID_ARGS shared_proc 是有效的句柄,但指向的进程不是通过 zx_process_create_shared() 或 zx_process_create()(使用 ZX_PROCESS_SHARED)创建的。
ZX_ERR_BAD_HANDLE shared_proc 不是有效的句柄。
ZX_ERR_WRONG_TYPE shared_proc 不是进程句柄。
ZX_ERR_BAD_STATE shared_proc 是有效的句柄,但共享状态不再有效(可能是因为共享该状态的所有进程都已终止)。
ZX_ERR_ACCESS_DENIED shared_proc 没有 ZX_RIGHT_MANAGE_PROCESS 权限(仅当不是 ZX_HANDLE_INVALID 时)。
如果看到其他错误,请参阅 zx_process_create()。