查看源代码 节点 (Elixir v1.16.2)

与 VM 节点相关的函数。

此模块中的一些函数由编译器内联,类似于 Kernel 模块中的函数,它们在其文档中明确标记为“由编译器内联”。有关内联函数的更多信息,请查看 Kernel 模块。

摘要

函数

如果本地节点处于活动状态,则返回 true

建立与 node 的连接。

强制断开节点的连接。

返回本地节点的魔术 cookie。

返回系统中所有可见节点的列表,不包括本地节点。

根据给定的参数返回节点列表。

监控节点的状态。

行为与 monitor/2 相同,只是它允许传递额外的选项,即 :allow_passive_connect

尝试与节点建立连接。

返回当前节点。

node 的魔术 cookie 设置为原子 cookie

返回由 nodefun 的应用启动的新进程的 PID。如果 node 不存在,则返回一个无用的 PID。

返回由 nodefun 的应用启动的新进程的 PID。

返回由 nodemodule.function(args) 的应用启动的新进程的 PID。

返回由 nodemodule.function(args) 的应用启动的新进程的 PID。

返回由 nodefun 的应用启动的新的链接进程的 PID。

返回由 nodemodule.function(args) 的应用启动的新的链接进程的 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()

返回由 nodefun 的应用启动的新进程的 PID。如果 node 不存在,则返回一个无用的 PID。

有关可用选项的列表,请参阅 :erlang.spawn/2

由编译器内联。

链接到此函数

spawn(node, fun, opts)

查看源代码
@spec spawn(t(), (-> any()), Process.spawn_opts()) :: pid() | {pid(), reference()}

返回由 nodefun 的应用启动的新进程的 PID。

如果 node 不存在,则返回一个无用的 PID。

有关可用选项的列表,请参阅 :erlang.spawn_opt/3

由编译器内联。

链接到此函数

spawn(node, module, fun, args)

查看源代码
@spec spawn(t(), module(), atom(), [any()]) :: pid()

返回由 nodemodule.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()}

返回由 nodemodule.function(args) 的应用启动的新进程的 PID。

如果 node 不存在,则返回一个无用的 PID。

有关可用选项的列表,请参阅 :erlang.spawn/4

由编译器内联。

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

返回由 nodefun 的应用启动的新的链接进程的 PID。

在调用进程和新进程之间原子地建立一个链接。如果 node 不存在,则返回一个无用的 PID(并且由于链接,将收到具有退出原因 :noconnection 的退出信号)。

由编译器内联。

链接到此函数

spawn_link(node, module, fun, args)

查看源代码
@spec spawn_link(t(), module(), atom(), [any()]) :: pid()

返回由 nodemodule.function(args) 的应用启动的新的链接进程的 PID。

在调用进程和新进程之间原子地建立一个链接。如果 node 不存在,则返回一个无用的 PID(并且由于链接,将收到具有退出原因 :noconnection 的退出信号)。

由编译器内联。

链接到此函数

spawn_monitor(node, fun)

查看源代码 (自 1.14.0 起)
@spec spawn_monitor(t(), (-> any())) :: {pid(), reference()}

在节点上生成给定函数,监控它并返回它的 PID 和监控引用。

由编译器内联。

链接到此函数

spawn_monitor(node, module, fun, args)

查看源代码 (自 1.14.0 起)
@spec spawn_monitor(t(), module(), atom(), [any()]) :: {pid(), reference()}

在节点上生成给定模块和函数,传递给定的参数,监控它并返回它的 PID 和监控引用。

由编译器内联。

链接到此函数

start(name, type \\ :longnames, tick_time \\ 15000)

查看源代码
@spec start(node(), :longnames | :shortnames, non_neg_integer()) ::
  {:ok, pid()} | {:error, term()}

将非分布式节点变成分布式节点。

此功能启动 :net_kernel 和其他相关进程。

此函数在实践中很少调用。相反,节点通过使用 --sname--name 标记通过命令行命名和启动。如果您需要使用此函数来动态命名节点,请确保 epmd 操作系统进程正在运行,方法是调用 epmd -daemon

当分布式系统已通过命令行界面或动态方式启动时调用此函数将返回错误。

示例

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

将分布式节点变成非分布式节点。

对于网络中的其他节点,这与节点停止相同。只有在使用 Node.start/3 启动节点时才有可能,否则返回 {:error, :not_allowed}。如果本地节点未处于活动状态,则返回 {:error, :not_found}