在Erlang中命名节点

时间:2009-01-05 16:52:47

标签: erlang

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

由于短划线,我的MacBook的默认名称(jamess-macbook)与Erlang的节点命名方案不相符:

(salt@jamess-macbook)4> {my_process, pepper@jamess-macbook} ! start
** exception error: bad argument in an arithmetic expression
     in operator  -/2
        called as pepper@jamess - macbook

我确信有一种简单的方法可以解决这个问题,除了重命名我想运行Erlang的所有机器,但我在文档中看不到它。

有什么建议吗?

2 个答案:

答案 0 :(得分:13)

你只需要正确引用原子。 'pepper@jamess-macbook'(带单引号)是节点的名称。

  

原子应该用单个封闭   引号(')如果它不以a开头   小写字母或如果包含   除字母数字以外的其他字符   字符,下划线(_)或@。    - Erlang Reference Manual

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

答案 1 :(得分:4)

使用以下命令启动Erlang解释器:

$ erl -sname node_name

其中node_name是您要用来引用机器的名称。

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