在Erlang中命名节点

Jam*_*ady 5 erlang

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

jamess-macbook由于破折号,我的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
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

arc*_*lus 13

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

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

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


mip*_*adi 5

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

$ erl -sname node_name
Run Code Online (Sandbox Code Playgroud)

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

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