Erlang节点没有一个pid:每个节点上都运行着许多进程,因此您需要指定所需的进程.
如果您想知道在foo节点上使用名称注册的进程的pid bar@localhost,您可以进行RPC调用erlang:whereis/1:
(foo@localhost)1> rpc:call(bar@localhost, erlang, whereis, [foo]).
<7120.56.0>
Run Code Online (Sandbox Code Playgroud)
虽然您可能不需要:如果要将消息发送到另一个节点上的命名进程,您可以使用{Name, Node}而不是先获取pid.例如,将消息发送到被叫的过程foo上bar@localhost:
{foo, bar@localhost} ! my_message
Run Code Online (Sandbox Code Playgroud)
你也可以转向另一个方向,从pid获取节点名称,node/1功能如下:
(foo@localhost)1> RemotePid = rpc:call(bar@localhost, erlang, whereis, [foo]).
<6928.32.0>
(foo@localhost)2> node(RemotePid).
bar@localhost
Run Code Online (Sandbox Code Playgroud)