2009-09-25 10 views
5

¿Hay alguna forma de consultar la tabla de nombres que gestiona epmd daemon?Erlang: ¿hay una API para 'epmd'?

Los nodos () función no es muy útil en ese frente.

NOTA: Estoy buscando una API aparte de analizar la salida generada a través de stdout.

Respuesta

6

Para consultar los nodos visibles para epmd, llame a:

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

Para obtener una lista de nodos conectados y sus puertos:

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

la primera llamada le devuelve la tabla en un formato crash dump. Si está interesado en adquirir los puertos reales, use el segundo.

+0

¿Se supone que esto funciona con nodos con nombres cortos? Eso es principalmente lo que uso y no obtengo los resultados esperados. – jldupont

+0

Asegúrate de que los nodos estén conectados, p. llame a net_adm: ping (mynode @ localhost). Funciona para mi. – Zed

+0

Debería haber sido más explícito: no quiero tener que "conectar" explícitamente los nodos. Solo quiero saber qué nodos son accesibles dentro de los límites de un "dominio de nombre corto". – jldupont

3

se obtiene la misma respuesta como código de Zed haciendo:

net_adm:names() 

No sé si eso es una forma más estándar de hacer o no.

+0

@rob charlton: ¡Gracias! – jldupont

Cuestiones relacionadas