摘要
创建一个可与其他进程共享部分地址空间的新进程。
声明
#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
所在的作业中。
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_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()
。