2016-04-25 13 views
-2

bekam ich einen Knoten: app01 @ mdiaz und ich brauche die pid (so etwas wie < 2908.77.0>)Wie erhalte ich die PID eines Knotennamens?

+0

Sie Frage ist verwirrend. Willst du die PID oder den Knoten? – Rei

+0

Für die Frage in Ihrem Titel können Sie erlang: node/1 verwenden. Für die PID eines Prozesses in einem Knoten, siehe https://stackoverflow.com/questions/32708758/getting-pid-for-a-process-running-on-a-remote-node – Rei

+0

Ich muss die PID bekommen – mdely86

Antwort

7

Ein Erlang-Knoten hat zu wissen, nicht ein einziges pid: es viele Prozesse laufen auf jedem Knoten, so müssen Sie angeben, welche Sie wollen.

Wenn Sie die pid des Prozesses mit dem Namen foo auf dem Knoten [email protected] registriert wissen möchten, können Sie einen RPC-Aufruf zu erlang:whereis/1 machen:

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

Auch wenn Sie nicht, dass benötigen: wenn Sie möchten, Um eine Nachricht an einen benannten Prozess auf einem anderen Knoten zu senden, können Sie {Name, Node} verwenden, anstatt zuerst die PID zu erhalten.

{foo, [email protected]} ! my_message 

Sie können auch in die andere Richtung gehen, immer den Knotennamen von einem pid, mit der node/1 Funktion:

([email protected])1> RemotePid = rpc:call([email protected], erlang, whereis, [foo]). 
<6928.32.0> 
([email protected])2> node(RemotePid). 
[email protected] 
zum Beispiel eine Nachricht an den Prozess foo auf [email protected] genannt senden
Verwandte Themen