我正在学习二郎,在第14章,书中写道:
"您可以使用shell命令将模块加载到所有节点:
command nl(Mod)
"。
所以,我想知道,怎么做?
顺便说一下,我找不到shell命令:"命令nl(Mod)"。请给我一些细节,非常感谢!
答案 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
。
这看起来很容易,但在复杂的生产系统中,适当的热负荷是非常先进的问题。