8

我正在使用 5.4 文档中的分布式编程教程,并且遇到了节点名称的问题。

由于破折号,我的 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 的所有机器,但我在文档中看不到它。

有什么建议么?

4

2 回答 2

14

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

如果原子不是以小写字母开头或包含除字母数字字符、下划线 (_) 或 @ 之外的其他字符,则应将原子括在单引号 (') 中。-- Erlang 参考手册

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

于 2009-01-05T18:30:42.447 回答
4

启动 Erlang 解释器:

$ erl -sname node_name

node_name您要用来指代机器的名称在哪里。

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

于 2009-01-05T16:59:14.330 回答