2009-01-05 111 views
5

我正在使用5.4文档中的distributed programming tutorial,并且遇到了节点名称的问题。Erlang中的命名节点

我的MacBook的默认名称(jamess-macbook)不Erlang的节点命名机制发挥出色,由于仪表板:

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

我敢肯定有一个简单的方法来解决这个问题,短重命名我想运行Erlang的所有机器,但是我在文档中看不到它。

有什么建议吗?

回答

12

你只需要正确引用原子。 '[email protected]'(带单引号)是节点的名称。

的原子应括在单 引号('),如果它不与 小写字母开头,或者如果它包含其他 字符字母数字以外 字符,下划线(_),或者@。 - Erlang Reference Manual

使用短的节点名(-sname)有各种其他后果(长节点名称节点有限的互操作性,DNS信息不加载到inet_db等)。

+0

更好 - 我尝试过双引号,而不是单引号;事实上,我没有意识到它们在语义上是不同的! – 2009-01-06 11:57:57

4

先从二郎解释:

$ erl -sname node_name 

其中node_name是您要使用来指代机的名称。

您甚至可以通过启动解释器的几个实例来模拟一台机器上的分布式系统,每个实例都有不同的节点名称。

+1

啊,我不知道你可以通过sname提供完整的节点名称(name @ machine)! – 2009-01-05 17:02:46