Получение двух оболочек erl для общения на OS X - PullRequest
6 голосов
/ 26 января 2010

Я хочу иметь возможность разговаривать двумя оболочками Эрланга. Я работаю на OS X.

Я попробовал tut17 пример здесь .

Я также пробовал:

$ erl -sname foo

и затем в новом Терминале:

$ erl -sname bar

(bar@elife)1> net_adm:ping(foo@elife).
pang

Есть идеи?

Ответы [ 3 ]

10 голосов
/ 26 января 2010

Это немного сломано на Mac. По умолчанию Mac не может разрешить свое собственное короткое имя. Имя вашего хоста действительно, вероятно, "elife.local".

Если вы запустите erl с -name FQDN, то пинг будет работать.

то есть: вы бы начали с

$ erl -name foo@elife.local

это, вероятно, можно исправить, сделав Mac способным разрешать собственное короткое имя

Вот пример вывода с моего mac. Когда я делаю -sname, я получаю тот же результат, что и вы.

Первый узел:

$ erl -name foo@mookie.local
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
(foo@mookie.local)1> 

Другой узел:

$ erl -name bar@mookie.local
Erlang R13B03 (erts-5.7.4) [source] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]

Eshell V5.7.4  (abort with ^G)
(bar@mookie.local)1> net_adm:ping('foo@mookie.local').
pong
4 голосов
/ 26 января 2010

Более простое исправление может просто отредактировать ваш файл / etc / hosts и убедиться, что у вас есть что-то вроде этой строки:

127.0.0.1 localhost elife

Мой mac отлично работает с короткими именами, и я верю, что именно это и было.

0 голосов
/ 26 января 2010

Чтобы узлы взаимодействовали друг с другом, оба должны иметь один и тот же файл cookie. В том же окне он работает так же, как и файл cookie из файла $ HOME / .erlang.cookie. Если этого файла нет, он создает новый файл и помещает в него случайный файл cookie. Будущие оболочки используют тот же файл cookie. Но всегда лучше указывать cookie в командной строке с помощью параметра setcookie.

erl -name node1@foo.local -setcookie mycookie

...