Именование узлов в Эрланге - PullRequest
5 голосов
/ 05 января 2009

Я играю с учебным пособием по распределенному из документации 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, но я не вижу этого в документации.

Есть предложения?

Ответы [ 2 ]

13 голосов
/ 05 января 2009

Вам просто нужно правильно процитировать атом. 'pepper@jamess-macbook' (с одинарными кавычками) - это имя узла.

Атом должен быть заключен в один кавычки ('), если он не начинается с строчная буква или если она содержит другие символы, кроме буквенно-цифровых символы подчеркивания (_) или @. - Справочное руководство Erlang

Использование коротких имен узлов (-sname) имеет различные другие последствия (ограниченная совместимость с узлами длинных имен узлов, не загружает информацию DNS в inet_db и т. Д.)

4 голосов
/ 05 января 2009

Запустите интерпретатор Erlang с помощью:

$ erl -sname node_name

где node_name - это имя, которое вы хотите использовать для обозначения машины.

Вы даже можете смоделировать распределенную систему на одном компьютере, запустив несколько экземпляров интерпретатора, каждый из которых имеет свое имя узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...