Fuchsia.process

添加数量:7

协议

启动器

fuchsia.process/launcher.fidl 中定义

用于启动进程的低级接口。

此接口用于手动组装进程。调用方会为新创建的进程提供所有功能。

创建进程通常使用 fdio_spawnfdio_spawn_etc,而不是直接使用此接口。fdio_spawnfdio_spawn_etc 函数是使用此接口实现的。

调试程序和其他客户端需要创建处于挂起状态的进程通常直接使用此接口。这些客户端使用 CreateWithoutStarting 方法创建进程,而无需实际启动进程。

添加参数

将给定的参数添加到进程的命令行。

多次调用此方法会串联参数。

请求

名称类型
args vector<vector<uint8>>

环境变量

将给定变量添加到进程的环境变量。

多次调用此方法会串联变量。

请求

名称类型
environ vector<vector<uint8>>

添加句柄

将给定的句柄添加到进程的启动句柄中。

多次调用此方法会串联句柄。

请求

名称类型
handles vector<HandleInfo>

AddNames

将给定名称添加到进程的命名空间。

命名空间中的路径不能重叠。如需了解详情,请参阅 https://fuchsia.dev/fuchsia-src/concepts/process/namespaces

多次调用此方法会将名称串联起来。

请求

名称类型
names vector<NameInfo>

创建且未启动

创建 info 所描述的进程,但不启动它。

处理此消息后,Launcher 会重置为其初始状态,并准备好启动另一个进程。

调用方负责使用 ProcessStartData 中的数据调用 zx_process_start 来实际启动进程。

当且仅当 statusZX_OK 时,data 存在。

请求

名称类型
info LaunchInfo

回复

名称类型
status zx/Status
data ProcessStartData?

Launch

创建并启动由 info 描述的过程。

处理此消息后,Launcher 会重置为其初始状态,并准备好启动另一个进程。

当且仅当 statusZX_OK 时,process 存在。

请求

名称类型
info LaunchInfo

回复

名称类型
status zx/Status
process handle<process>?

SetOptions

设置用于创建进程的选项。

多次调用此方法会覆盖当前选项。

添加数量:9

请求

名称类型
options uint32

解析器

fuchsia.process/resolver.fidl 中定义

用于将名称解析为可执行文件和库加载器的接口。

可执行文件本身通常不足以创建正常运行的进程,因为许多可执行文件也会加载共享库。在 Fuchsia 上,没有共享库的全局池。相反,每个进程都有一个关联的 fuchsia.ldsvc.Loader,可用于访问适合该进程的专用共享库池。

此接口提供了一个协议,用于将名称解析为可执行文件的 zx.Handle:VMO 以及其关联共享库的 fuchsia.ldsvc.Loader

很少直接使用此接口。相反,当 fdio_spawnfdio_spawn_etc 尝试运行包含 #!resolve 指令的文件时,会在内部使用此接口。

已弃用

解决

将指定的 name 解析为 executable 和共享库加载器。

executable 如果存在,则适合用作 LaunchInfoexecutable 属性。具体而言,它具有 ZX_RIGHT_EXECUTEldsvc(如果存在)适合在启动进程时用作 PA_LDSVC_LOADER 句柄。

例如,解析器可能会在软件包内找到给定的 name,并从该软件包以及作用域限定为该软件包的共享库加载器返回可执行二进制文件。

请求

名称类型
name string[2048]

回复

名称类型
status zx/Status
executable handle<vmo>?
ldsvc fuchsia.ldsvc/Loader?

结构

HandleInfo 资源

fuchsia.process/launcher.fidl 中定义

在启动时提供给进程的句柄的相关信息。

系统会在引导序列中为进程提供一组初始句柄。其中一些句柄与进程参数标识符相关联,这些标识符指定新进程的预期用途。

此结构表示一个这样的句柄及其关联的标识符。

字段类型说明默认
handle handle<handle>

用于此进程参数的句柄。

无默认值
id uint32

进程参数标识符。

有关已知进程参数的定义,请参阅 <zircon/processargs.h>。

无默认值

LaunchInfo 资源

fuchsia.process/launcher.fidl 中定义

启动进程所需的信息。

字段类型说明默认
executable handle<vmo>

要在进程中运行的可执行文件。

无默认值
job handle<job>

要在其中创建进程的作业。

无默认值
name string[32]

要分配给已创建进程的名称。

无默认值

NameInfo 资源

fuchsia.process/launcher.fidl 中定义

在启动时提供给进程的命名空间条目。

系统会在引导序列中为进程提供一组初始句柄。其中一些句柄与路径相关联,这些路径将新进程的预期用途指定为命名空间条目。

此结构表示一个这样的句柄及其关联的命名空间路径。

字段类型说明默认
path fuchsia.io/Path

用于安装关联目录的路径。

必须是绝对路径(即以“/”开头)。

无默认值
directory fuchsia.io/Directory

关联的目录。

无默认值

ProcessStartData 资源

fuchsia.process/launcher.fidl 中定义

启动进程所需的信息。

如需启动该过程,请使用提供的实参调用 zx_process_start

字段类型说明默认
process handle<process>

已创建的进程。

无默认值
root_vmar handle<vmar>

创建进程时创建的 vmar 对象。

请参阅 https://fuchsia.dev/fuchsia-src/reference/syscalls/process_create.md

无默认值
thread handle<thread>

进程的初始线程。

应在启动进程时传递给 zx_process_start

无默认值
entry uint64

进程中初始入口点的地址。

应在启动进程时传递给 zx_process_start

无默认值
stack uint64

进程初始线程的堆栈指针值。

应在启动进程时传递给 zx_process_start

无默认值
bootstrap handle<channel>

在启动时传递给进程的引导通道。

应在启动进程时传递给 zx_process_start

无默认值
vdso_base uint64

启动时传递给进程的 vDSO 的基础地址。

应在启动进程时传递给 zx_process_start

无默认值
base uint64

已加载的 ELF 文件的基本加载地址。

通常由调试程序或其他检查进程的工具使用。

无默认值

常量

名称类型说明
MAX_RESOLVE_NAME_SIZE 2048 uint32

Resolver 使用的名称的大小上限。