Erlang的熱更新

書本上的知識太過淺薄,再次稍微總結下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.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章