bekam ich einen Knoten: app01 @ mdiaz und ich brauche die pid (so etwas wie < 2908.77.0>)Wie erhalte ich die PID eines Knotennamens?
-2
A
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
Sie Frage ist verwirrend. Willst du die PID oder den Knoten? – Rei
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
Ich muss die PID bekommen – mdely86