erlang分发节点加载模块

时间:2015-02-19 09:09:39

标签: erlang erlang-shell

我正在学习二郎,在第14章,书中写道:

  

"您可以使用shell命令将模块加载到所有节点:command nl(Mod)"。

所以,我想知道,怎么做?

顺便说一下,我找不到shell命令:"命令nl(Mod)"。

请给我一些细节,非常感谢!

1 个答案:

答案 0 :(得分:2)

你试图在shell中输入help().吗?此函数在stdlib中的c module中定义。但shell会理解nl(Mod).

要执行测试,请启动至少两个erlang vms并连接它:

erl -pa your_module_path -name first@127.0.0.1
erl -name second@127.0.0.1
第一个shell中的

通过以下方式连接到第二个节点:

net_kernel:connect('second@127.0.0.1').

应以true回复。

your_module_path中创建一些简单的模块,如:

-module(nl_test).
-export([test/0]).
test() -> 1.

并按c(nl_test).编译它现在您可以从第一个shell运行nl_test:test()但第二个无法加载它。要广播它并强制加载,只需从第一个nl(nl_test).开始运行,现在尝试从第二个shell nl_test:test()开始。

假设您已将test() -> 1.修改为test() -> 2.,您只需运行c(nl_test), nl(nl_test).或缩短nc(nl_test),这意味着相同。

所有已连接节点上的

nl_test:test().都应返回2

这看起来很容易,但在复杂的生产系统中,适当的热负荷是非常先进的问题。