Fuchsia.process

添加时间:7

协议

启动器

fuchsia.process/launcher.fidl 中定义

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

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

创建进程通常使用 fdio_spawnfdio_spawn_etc, 与直接使用此界面相比fdio_spawnfdio_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,以实际启动进程。

当且仅当 statusZX_OK 时,才会出现 data

请求

名称类型
info LaunchInfo

响应

名称类型
status zx/Status
data ProcessStartData?

发布

创建并启动 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_EXECUTE。如果存在,则 ldsvc 适合用作 PA_LDSVC_LOADER

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

请求

名称类型
name string:2048

响应

名称类型
status zx/Status
executable handle<vmo>?
ldsvc client_end: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 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 使用的名称的大小上限。