让两个 erl shell 在 OS X 上进行对话

发布于 2024-08-19 04:13:16 字数 348 浏览 8 评论 0原文

我希望能够有两个 Erlang shell 来交谈。我在 OS X 上运行。

我在 此处尝试了 tut17 示例。

我也尝试过:

$ erl -sname foo

然后在新的终端中:

$ erl -sname bar

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

有什么想法吗?

I want to be able to have two Erlang shells to talk. I'm running on OS X.

I tried the tut17 example here.

I've also tried:

$ erl -sname foo

and then in a new Terminal:

$ erl -sname bar

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘴硬脾气大 2024-08-26 04:13:16

它在 mac 上有点坏了。默认情况下,mac 无法解析自己的短名称。您的主机名很可能是“elife.local”。

如果您使用 -name FQDN 启动 erl,则 ping 将起作用。

即:你可以用这个启动它,

$ erl -name [email protected]

这可能可以通过使 mac 能够解析它自己的短名称来解决。

这是我的 mac 的示例输出。当我执行 -sname 时,我得到与你相同的结果。

第一个节点:

$ erl -name [email protected]
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)
([email protected])1> 

另一个节点:

$ erl -name [email protected]
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)
([email protected])1> net_adm:ping('[email protected]').
pong

It's kind of broken on the mac. By default, the mac can't resolve its own shortname. Your host's name is really probably "elife.local".

If you start erl with -name FQDN, then the pings will work.

ie: you would start it with

$ erl -name [email protected]

this probably could be fixed by making the mac capable of resolving it's own short name

Here's example output from my mac. When I do -sname I get the same result as you.

The first node:

$ erl -name [email protected]
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)
([email protected])1> 

The other node:

$ erl -name [email protected]
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)
([email protected])1> net_adm:ping('[email protected]').
pong
偏爱自由 2024-08-26 04:13:16

一个更简单的修复可能只是编辑您的 /etc/hosts 文件并确保您有类似以下行的内容:

127.0.0.1 localhost elife

我的 mac 可以很好地使用短名称,我相信这就是它的作用。

A simpler fix might just be editing your /etc/hosts file and make sure you have something like this line:

127.0.0.1 localhost elife

My mac works fine with shortnames, and I believe this is what did it.

筑梦 2024-08-26 04:13:16

为了使节点相互通信,两个节点都应该具有相同的 cookie。在同一个盒子上,它最终使用 $HOME/.erlang.cookie 文件中的 cookie 来工作。如果该文件不存在,它将创建一个新文件并在其中放入一些随机 cookie。未来的 shell 使用相同的 cookie。但最好在命令行上通过 setcookie 参数指定 cookie。

erl -name [电子邮件受保护] -setcookie mycookie

For the nodes communicate with each other, both should have the same cookie. On the same box it works as it end up using the cookie from $HOME/.erlang.cookie file. If this file is not present, it create a new file and put some random cookie in it. Future shells use the same cookie. But it is always better to specify the cookie on the command line via setcookie parameter.

erl -name [email protected] -setcookie mycookie

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文