Вопрос

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

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

Это было полезно?

Решение

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

  

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

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

Другие советы

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

$ erl -sname node_name

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top