檢視原始碼 Node (Elixir v1.16.2)

與 VM 節點相關的函式。

此模組中的部分函式會由編譯器內嵌,類似於 Kernel 模組中的函式,且會在文件明確標示為「由編譯器內嵌」。如需進一步瞭解內嵌函式,請查看 Kernel 模組。

摘要

函式

如果本機節點為作用中,則傳回 true

建立與 node 的連線。

強制中斷節點的連線。

傳回本機節點的神奇 cookie。

傳回系統中所有可見節點的清單,不包含本機節點。

根據給定的引數傳回節點清單。

監控節點的狀態。

monitor/2 的行為相同,但允許給予額外的選項,即 :allow_passive_connect

嘗試建立與節點的連線。

傳回目前的節點。

node 的神奇 cookie 設定為原子 cookie

傳回在 node 上套用 fun 啟動的新程序的 PID。如果 node 不存在,則會傳回無用的 PID。

傳回在 node 上套用 fun 啟動的新程序的 PID。

傳回在 node 上套用 module.function(args) 啟動的新程序的 PID。

傳回在 node 上套用 module.function(args) 啟動的新程序的 PID。

傳回在 node 上套用 fun 啟動的新連結程序的 PID。

傳回由 module.function(args)node 上應用程式啟動的新連結處理序的 PID。

在節點上產生給定的函數,監控它並傳回它的 PID 和監控參考。

在節點上產生給定的模組和函數,傳遞給定的參數,監控它並傳回它的 PID 和監控參考。

將非分散式節點轉換為分散式節點。

將分散式節點轉換為非分散式節點。

類型

@type state() :: :visible | :hidden | :connected | :this | :known
@type t() :: node()

函數

@spec alive?() :: boolean()

如果本機節點為作用中,則傳回 true

也就是說,如果節點可以成為分散式系統的一部分。

@spec connect(t()) :: boolean() | :ignored

建立與 node 的連線。

傳回 true(如果成功)、false(如果失敗),以及原子 :ignored(如果本機節點未執行)。

如需更多資訊,請參閱 :net_kernel.connect_node/1

@spec disconnect(t()) :: boolean() | :ignored

強制中斷節點的連線。

這將顯示在 node 上,彷彿本機節點已當機。此函數主要用於 Erlang 網路驗證協定。傳回 true(如果斷線成功),否則傳回 false。如果本機節點未執行,函數傳回 :ignored

如需更多資訊,請參閱 :erlang.disconnect_node/1

@spec get_cookie() :: atom()

傳回本機節點的神奇 cookie。

傳回 cookie(如果節點執行中),否則傳回 :nocookie

@spec list() :: [t()]

傳回系統中所有可見節點的清單,不包含本機節點。

list(:visible) 相同。

由編譯器內嵌。

@spec list(state() | [state()]) :: [t()]

根據給定的引數傳回節點清單。

當參數為清單時傳回的結果,是滿足清單元素的析取的節點清單。

如需更多資訊,請參閱 :erlang.nodes/1

由編譯器內嵌。

@spec monitor(t(), boolean()) :: true

監控節點的狀態。

如果 flagtrue,則開啟監控。如果 flagfalse,則關閉監控。

如需更多資訊,請參閱 :erlang.monitor_node/2

如需監控所有節點的狀態變更,請參閱 :net_kernel.monitor_nodes/2

連結到此函數

monitor(node, flag, options)

檢視原始碼
@spec monitor(t(), boolean(), [:allow_passive_connect]) :: true

monitor/2 的行為相同,但允許給予額外的選項,即 :allow_passive_connect

如需更多資訊,請參閱 :erlang.monitor_node/3

如需監控所有節點的狀態變更,請參閱 :net_kernel.monitor_nodes/2

@spec ping(t()) :: :pong | :pang

嘗試建立與節點的連線。

如果失敗,則傳回 :pang,如果成功,則傳回 :pong

範例

iex> Node.ping(:unknown_node)
:pang
@spec self() :: t()

傳回目前的節點。

它傳回與內建 node() 相同的結果。

連結到此函數

set_cookie(node \\ Node.self(), cookie)

檢視原始碼
@spec set_cookie(t(), atom()) :: true

node 的神奇 cookie 設定為原子 cookie

預設節點為 Node.self/0,即本機節點。如果 node 為本機節點,則此函數也會將所有其他未知節點的 cookie 設定為 cookie

如果指定的 node 未執行,則此函數會引發 FunctionClauseError

@spec spawn(t(), (-> any())) :: pid()

傳回在 node 上套用 fun 啟動的新程序的 PID。如果 node 不存在,則會傳回無用的 PID。

有關可用選項清單,請參閱 :erlang.spawn/2

由編譯器內嵌。

@spec spawn(t(), (-> any()), Process.spawn_opts()) :: pid() | {pid(), reference()}

傳回在 node 上套用 fun 啟動的新程序的 PID。

如果 node 不存在,則會傳回一個無用的 PID。

有關可用選項清單,請參閱 :erlang.spawn_opt/3

由編譯器內嵌。

連結到此函數

spawn(node, module, fun, args)

檢視原始碼
@spec spawn(t(), module(), atom(), [any()]) :: pid()

傳回在 node 上套用 module.function(args) 啟動的新程序的 PID。

如果 node 不存在,則會傳回一個無用的 PID。

有關可用選項清單,請參閱 :erlang.spawn/4

由編譯器內嵌。

連結到此函數

spawn(node, module, fun, args, opts)

檢視原始碼
@spec spawn(t(), module(), atom(), [any()], Process.spawn_opts()) ::
  pid() | {pid(), reference()}

傳回在 node 上套用 module.function(args) 啟動的新程序的 PID。

如果 node 不存在,則會傳回一個無用的 PID。

有關可用選項清單,請參閱 :erlang.spawn/4

由編譯器內嵌。

@spec spawn_link(t(), (-> any())) :: pid()

傳回在 node 上套用 fun 啟動的新連結程序的 PID。

會在呼叫程序和新程序之間建立連結,這是原子操作。如果 node 不存在,則會傳回一個無用的 PID(而且由於連結,會收到一個退出訊號,退出原因為 :noconnection)。

由編譯器內嵌。

連結到此函數

spawn_link(節點, 模組, 函數, 參數)

檢視原始碼
@spec spawn_link(t(), module(), atom(), [any()]) :: pid()

傳回由 module.function(args)node 上應用程式啟動的新連結處理序的 PID。

會在呼叫程序和新程序之間建立連結,這是原子操作。如果 node 不存在,則會傳回一個無用的 PID(而且由於連結,會收到一個退出訊號,退出原因為 :noconnection)。

由編譯器內嵌。

連結到此函數

spawn_monitor(節點, 函數)

檢視原始碼 (自 1.14.0 起)
@spec spawn_monitor(t(), (-> any())) :: {pid(), reference()}

在節點上產生給定的函數,監控它並傳回它的 PID 和監控參考。

由編譯器內嵌。

連結到此函數

spawn_monitor(節點, 模組, 函數, 參數)

檢視原始碼 (自 1.14.0 起)
@spec spawn_monitor(t(), module(), atom(), [any()]) :: {pid(), reference()}

在節點上產生給定的模組和函數,傳遞給定的參數,監控它並傳回它的 PID 和監控參考。

由編譯器內嵌。

連結到此函數

start(名稱, 類型 \\ :longnames, tick_time \\ 15000)

檢視原始碼
@spec start(node(), :longnames | :shortnames, non_neg_integer()) ::
  {:ok, pid()} | {:error, term()}

將非分散式節點轉換為分散式節點。

此功能會啟動 :net_kernel 和其他相關程序。

此函數在實務上很少被呼叫。相反地,節點會透過使用 --sname--name 旗標,在命令列中命名並啟動。如果您需要使用此函數來動態命名節點,請務必透過呼叫 epmd -daemon 來確認 epmd 作業系統程序正在執行。

如果在已透過命令列介面或動態啟動分散式處理的情況下呼叫此函數,則會傳回錯誤。

範例

{:ok, pid} = Node.start(:example, :shortnames, 15000)
@spec stop() :: :ok | {:error, :not_allowed | :not_found}

將分散式節點轉換為非分散式節點。

對於網路中的其他節點,這與節點關閉相同。只有在節點使用 Node.start/3 啟動時才有可能,否則會傳回 {:error, :not_allowed}。如果本機節點未執行,則會傳回 {:error, :not_found}