2008-05-27
在所有连接的节点上装载指定的程序模块
通过c模块中的nl函数实现,如下
c:nl(Module) -> void()
Load module on all nodes.
通过net_adm:ping(Node)可以实现节点的连接
使用nl可以将模块远程装载到其它的节点上,即使那些节点没有此模块的代码
io模块中也有一个nl函数,不过该函数表示写一个new line
io_lib模块中也有一个nl,含义同上
注意:c模块代表命令接口(Command Interface)的意思;该模块的文档称:该模块中的函数仅用于在Erlang shell中使用,使用时模块名前缀可以省去
查nl源码如下:
rpc:eval_everywhere(code,load_binary,[Mod,Fname,Bin])最终执行
eval_everywhere([node()|nodes()], Module, Function, Args)
也就是说在[node()|nodes()]的节点列表中的每个节点上执行code:load_binary(Mode, Fname, Bin)
code:get_object_code(Module) -> {Module, Binary, Filename} | error
此函数在code path中模块Module的二进制目标代码。Binary是包含此模块目标代码的二进制数据对象,如果要在分布式系统中远程装载代码,例如在远程节点Node中装载模块Module可以这样:
c:nl(Module) -> void()
Load module on all nodes.
通过net_adm:ping(Node)可以实现节点的连接
使用nl可以将模块远程装载到其它的节点上,即使那些节点没有此模块的代码
io模块中也有一个nl函数,不过该函数表示写一个new line
io_lib模块中也有一个nl,含义同上
注意:c模块代表命令接口(Command Interface)的意思;该模块的文档称:该模块中的函数仅用于在Erlang shell中使用,使用时模块名前缀可以省去
查nl源码如下:
nl(Mod) ->
case code:get_object_code(Mod) of
{_Module, Bin, Fname} ->
rpc:eval_everywhere(code,load_binary,[Mod,Fname,Bin]);
Other ->
Other
end.
rpc:eval_everywhere(code,load_binary,[Mod,Fname,Bin])最终执行
eval_everywhere([node()|nodes()], Module, Function, Args)
也就是说在[node()|nodes()]的节点列表中的每个节点上执行code:load_binary(Mode, Fname, Bin)
code:get_object_code(Module) -> {Module, Binary, Filename} | error
此函数在code path中模块Module的二进制目标代码。Binary是包含此模块目标代码的二进制数据对象,如果要在分布式系统中远程装载代码,例如在远程节点Node中装载模块Module可以这样:
...
{_Module, Binary, Filename} = code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename, Binary]),
...
发表评论
- 浏览: 2760 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最新评论
-
Mnesia──一个用于电信应 ...
theseus8054 写道Mnesia数据库所使用的项目的负载之高恐怕是你难以 ...
-- by gigix -
Mnesia──一个用于电信应 ...
先用Mnesia实现个简单的DBMS系统演示下吧, 否则真是曲高寡众
-- by sw2wolf -
关于真随机数生成器
老高的编程艺术之二就专门介绍了随机数,不过数学公式一大堆,实在看不下去
-- by run_xiao -
关于真随机数生成器
真随机数发生器更不可靠,因为你无法确定它的分布,也无法保证它是平稳和独立的序列
-- by shellkk -
关于真随机数生成器
cryolite 写道 有人在BBS上提到:RSA的书上介绍过一种随机数发生器, ...
-- by aidiyuxin






评论排行榜