书本上的知识太过浅薄,再次稍微总结下erlang代码更新方式。
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all nodes including this one
{ResL, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]),
%% and then maybe check the ResL list.
%如果是在指定节点上执行热更新还可以这样:
{_Module, Binary, Filename} = code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename, Binary])
%也可这样:
network_load(Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
[rpc:call(Node, code, load_binary, [Module, Filename,
Binary]) || Node <- nodes()],
ok.
network_load(Node, Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename,
Binary]),
ok.
%% Find object code for module Mod
{Mod, Bin, File} = code:get_object_code(Mod),
%% and load it on all nodes including this one
{ResL, _} = rpc:multicall(code, load_binary, [Mod, Bin, File,]),
%% and then maybe check the ResL list.
%如果是在指定节点上执行热更新还可以这样:
{_Module, Binary, Filename} = code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename, Binary])
%也可这样:
network_load(Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
[rpc:call(Node, code, load_binary, [Module, Filename,
Binary]) || Node <- nodes()],
ok.
network_load(Node, Module)->
{_Module, Binary, Filename} =
code:get_object_code(Module),
rpc:call(Node, code, load_binary, [Module, Filename,
Binary]),
ok.