Fuchsia.process

新增:7

协议

启动器

在 fuchsia.process/launcher.fidl 中定义

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

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

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

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

AddArgs

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

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

请求

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

AddEnvirons

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

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

请求

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

AddHandles

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

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

请求

名称类型
handles vector<HandleInfo>

AddNames

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

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

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

请求

名称类型
names vector<NameInfo>

CreateWithoutStarting

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

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

调用方负责使用 ProcessStartData 中的数据调用 zx_process_start,以实际启动该过程。

当且仅当 status 为 ZX_OK 时,data 才会存在。

请求

名称类型
info LaunchInfo

响应

名称类型
status zx/Result
data ProcessStartData?

发布

创建并启动 info 描述的进程。

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

当且仅当 status 为 ZX_OK 时,process 才会存在。

请求

名称类型
info LaunchInfo

响应

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

SetOptions

设置创建进程时使用的选项。

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

新增:9

请求

名称类型
options uint32

解析器

在 fuchsia.process/resolver.fidl 中定义

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

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

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

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

已弃用

解决

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

如果存在,executable 适合用作 LaunchInfo 的 executable 属性,特别是它将具有 ZX_RIGHT_EXECUTE。如果存在,ldsvc 适合在启动进程时用作 PA_LDSVC_LOADER 句柄。

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

请求

名称类型
name string:2048

响应

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

STRUCTS

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 client_end: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 使用的名称的大小上限。