【发布时间】:2016-04-25 14:46:07
【问题描述】:
我有一个节点:app01@mdiaz,我需要知道 pid(类似于 )
【问题讨论】:
-
您的问题令人困惑。你想要pid还是节点?
-
标题中的问题可以使用erlang:node/1。节点中进程的pid见stackoverflow.com/questions/32708758/…
-
我需要获取 pid
我有一个节点:app01@mdiaz,我需要知道 pid(类似于 )
【问题讨论】:
一个 Erlang 节点没有一个 pid:每个节点上运行着许多进程,所以你需要指定你想要的。
如果想知道在bar@localhost节点上注册名为foo的进程的pid,可以对erlang:whereis/1进行RPC调用:
(foo@localhost)1> rpc:call(bar@localhost, erlang, whereis, [foo]).
<7120.56.0>
尽管您可能不需要:如果您想向另一个节点上的命名进程发送消息,您可以使用{Name, Node} 而不是首先获取 pid。例如,要向bar@localhost 上名为foo 的进程发送消息:
{foo, bar@localhost} ! my_message
您也可以使用node/1 函数从 pid 获取节点名称:
(foo@localhost)1> RemotePid = rpc:call(bar@localhost, erlang, whereis, [foo]).
<6928.32.0>
(foo@localhost)2> node(RemotePid).
bar@localhost
【讨论】: