2009-01-05 19 views
5

Estoy jugando con el distributed programming tutorial de la documentación 5.4, y me he encontrado con un problema con los nombres de los nodos.Nombrando nodos en Erlang

nombre por defecto de mi MacBook (jamess-macbook) no juega bien con el esquema de nodo de denominación de Erlang, debido al tablero:

([email protected])4> {my_process, [email protected]} ! start 
** exception error: bad argument in an arithmetic expression 
    in operator -/2 
     called as [email protected] - macbook 

Estoy seguro de que hay una manera fácil de evitar esto, a falta de cambio de nombre todas las máquinas en las que quiero ejecutar Erlang, pero no puedo verlas en la documentación.

¿Alguna sugerencia?

Respuesta

12

Solo necesita citar el átomo correctamente. '[email protected]' (con las comillas simples) es el nombre del nodo.

Un átomo debe estar encerrada en un solo comillas (') si no comienza con una carta minúscula o si contiene otros caracteres que alfanuméricos personajes, guión bajo (_) o @. - Erlang Reference Manual

Uso de nombres de nodo cortos (-sname) tiene otras consecuencias (interoperabilidad limitada con nodos nombre largo de nodo, no se carga dns información en inet_db y así sucesivamente).

+0

Mejor aún: había intentado con comillas dobles, no solo; de hecho, ¡no me di cuenta de que eran semánticamente diferentes! –

4

Inicie el intérprete de Erlang con:

$ erl -sname node_name 

donde node_name es el nombre que desea utilizar para referirse a la máquina.

Incluso puede simular un sistema distribuido en una sola máquina al iniciar varias instancias del intérprete, cada una con un nombre de nodo diferente.

+1

¡Ah, no sabía que podría proporcionar el nombre de nodo completo (nombre @ máquina) a través de sname! –