2009-09-25 13 views
5

Gibt es eine Möglichkeit, die Namenstabelle abzufragen, die der epmd-Daemon verwaltet?Erlang: Gibt es eine API zu 'epmd'?

Die nodes() Funktion ist nicht sehr hilfreich auf dieser Front.

HINWEIS: Ich bin auf der Suche nach einer API beiseite von Parsing der Ausgabe über Stdout generiert.

Antwort

6

Um Knoten sichtbar für EPMD abzufragen, rufen:

erlang:system_info(dist). 
erlang:system_info(dist_ctrl). 

Die ersten Aufruf zurückgegeben Sie die Tabelle in einem crash dump Format:

EpmdModule = net_kernel:epmd_module(). % erl_epmd by default 
EpmdModule:names(). 

Um eine Liste der verbundenen Knoten und ihre Häfen zu bekommen. Wenn Sie daran interessiert sind, die tatsächlichen Ports zu erwerben, verwenden Sie die zweite.

+0

Soll das mit Knoten mit kurzen Namen funktionieren? Das ist meistens was ich benutze und ich bekomme nicht die erwarteten Ergebnisse. – jldupont

+0

Stellen Sie sicher, dass die Knoten verbunden sind, z. Rufen Sie net_adm: ping (mynode @ localhost) auf. Funktioniert bei mir. – Zed

+0

Ich hätte expliziter sein sollen: Ich möchte die Knoten nicht explizit "verbinden" müssen. Ich möchte nur wissen, welche Knoten innerhalb der Grenzen einer "Kurznamen-Domäne" erreichbar sind. – jldupont

3

Sie erhalten die gleiche Antwort wie Code Zeds, indem Sie:

net_adm:names() 

Ich weiß nicht, ob das eine standardisierte Möglichkeit, es zu tun oder nicht.

+0

@rob charlton: Danke! – jldupont