2016-04-25 6 views
-2

Я получил узел: app01 @ mdiaz и мне нужно знать идентификатор процесса (что-то вроде < 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: Есть много процессов, запущенных на каждом узле, поэтому вам нужно указать, какой из них вы хотите.

Если вы хотите знать PID процесса, зарегистрированного имени foo на узле [email protected], вы можете сделать вызов 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 

Вы можете также пойти в другом направлении, получить имя узла из ФИД, с node/1 функции:

([email protected])1> RemotePid = rpc:call([email protected], erlang, whereis, [foo]). 
<6928.32.0> 
([email protected])2> node(RemotePid). 
[email protected] 
Смежные вопросы