fuchsia.process

已新增:7

專家

啟動器

定義於 fuchsia.process/launcher.fidl

用於啟動程序的低階介面。

這個介面可用於手動組合程序。呼叫端會為新建立的程序提供所有功能。

該程序通常會使用 fdio_spawnfdio_spawn_etc,而非直接使用這個介面。fdio_spawnfdio_spawn_etc 函式是透過這個介面實作。

需要處於停權狀態建立程序的偵錯工具和其他用戶端通常會直接使用這個介面。這些用戶端會使用 CreateWithoutStarting 方法建立程序,而不實際啟動。

新增引數

將指定的引數新增至程序的指令列。

多次呼叫此方法會串連引數。

要求

名稱類型
args vector<vector<uint8>>

AddEnvirons

將指定的變數新增至程序中的環境變數。

多次呼叫此方法會串連變數。

要求

名稱類型
environ vector<vector<uint8>>

新增帳號代碼

將指定的控點新增至程序的啟動控點。

多次呼叫此方法即可串連控點。

要求

名稱類型
handles vector<HandleInfo>

新增名稱

將指定的名稱新增至命名空間。

命名空間中的路徑不得重疊。詳情請參閱 https://fuchsia.dev/fuchsia-src/concepts/process/namespaces

多次呼叫此方法會串連名稱。

要求

名稱類型
names vector<NameInfo>

建立開始時

建立 info 描述的程序,但不會啟動。

處理這則訊息後,Launcher 會重設為初始狀態,並準備好啟動其他程序。

呼叫端負責使用 ProcessStartData 中的資料呼叫 zx_process_start 以實際啟動程序。

data 只有在 statusZX_OK 時才會顯示。

要求

名稱類型
info LaunchInfo

回應

名稱類型
status zx/Status
data ProcessStartData?

發布

建立並開始啟動 info 所述的程序。

處理這則訊息後,Launcher 會重設為初始狀態,並準備好啟動其他程序。

process 只有在 statusZX_OK 時才會顯示。

要求

名稱類型
info LaunchInfo

回應

名稱類型
status zx/Status
process handle<process>?

設定選項

設定建立程序時使用的選項。

多次呼叫此方法會覆寫目前的選項。

已新增: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。如果存在,則適合在啟動程序時做為 PA_LDSVC_LOADER 處理使用。ldsvc

舉例來說,解析器可能會在套件中找到指定的 name,並從套件傳回可執行二進位檔,以及限定為該套件的共用程式庫載入器。

要求

名稱類型
name string[2048]

回應

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

結構

HandleInfo 資源

定義於 fuchsia.process/launcher.fidl

系統在啟動時提供給程序的帳號代碼相關資訊。

程序會給程序一組初始控點,做為啟動程序順序的一部分。其中部分帳號代碼與程序引數 ID 相關聯,可在新程序中指定其預期用途。

這個結構代表一個帳號代碼及其相關的 ID。

欄位類型說明預設
handle handle<handle>

用於這個處理程序引數的控制代碼。

無預設
id uint32

程序引數 ID。

如需瞭解已知程序引數的定義,請參閱 <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 使用的名稱大小上限。