2016-04-25 76 views
-2

我有一個節點:app01 @ mdiaz,我需要知道的PID(像< 2908.77.0>如何獲得erlang節點名稱的pid?

+0

你的問題很混亂。你想要pid還是節點? – Rei

+0

對於標題中的問題,可以使用erlang:node/1。 對於節點中的進程的pid,請參閱https://stackoverflow.com/questions/32708758/getting-pid-for-a-process-running-on-a-remote-node – Rei

+0

我需要獲取pid – mdely86

回答

7

一個Erlang節點沒有一個單一的PID:有運行多個進程在每個節點上,所以你需要指定你想要的。

如果你想知道這個名字foo節點[email protected]上註冊的進程的PID,可以使一個RPC調用erlang:whereis/1

([email protected])1> rpc:call([email protected], erlang, whereis, [foo]). 
<7120.56.0> 

雖然你可能並不需要的是:如果你想要將消息發送到另一個節點上的已命名進程,可以使用{Name, Node}而不是首先獲取該pid。例如,將消息發送給名爲foo工藝上[email protected]

{foo, [email protected]} ! my_message 

您還可以去另一個方向,從PID獲得的節點名稱,與node/1功能:

([email protected])1> RemotePid = rpc:call([email protected], erlang, whereis, [foo]). 
<6928.32.0> 
([email protected])2> node(RemotePid). 
[email protected] 
相關問題