2016-04-25 1 views
-2

J'ai obtenu un noeud: app01 @ mdiaz et je dois connaître le pid (quelque chose comme < 2908.77.0>)Comment entrer erlang le pid d'un nom de noeud?

+0

Votre question est source de confusion. Vous voulez le pid ou le noeud? – Rei

+0

Pour la question dans votre titre, vous pouvez utiliser erlang: node/1. Pour le pid d'un processus dans un nœud, voir https://stackoverflow.com/questions/32708758/getting-pid-for-a-process-running-on-a-remote-node – Rei

+0

Je dois obtenir le pid – mdely86

Répondre

7

Un noeud Erlang n'a pas un seul pid: il y a beaucoup de processus en cours d'exécution sur chaque nœud, vous devez donc spécifier celui que vous voulez.

Si vous voulez connaître le pid du processus enregistré avec le nom foo sur le nœud [email protected], vous pouvez faire un appel RPC à erlang:whereis/1:

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

Bien que vous ne pourriez pas besoin que: si vous voulez Pour envoyer un message à un processus nommé sur un autre nœud, vous pouvez utiliser {Name, Node} au lieu d'obtenir le pid. Par exemple, pour envoyer un message au processus appelé foo sur [email protected]:

{foo, [email protected]} ! my_message 

Vous pouvez aussi aller dans l'autre direction, obtenir le nom de nœud d'un pid, avec la fonction node/1:

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