系統技術非業餘研究 » Erlang動態編譯載入模組
阿新 • • 發佈:2018-12-31
ejabberd最新的版本有個模組叫做 dynamic_compile, 支援從string動態載入一個模組。有了這個功能我們就可以很方便的動態生成一個模組,加入到我們的執行期。我想的有以下幾個功能:
1. const 模組
2. 如日誌系統的級別:
log(S) when 0 > 1 -> do_log(S); log(_)-> skip.
這樣的模組 編譯的時候 會把前面的就省去了判斷, 直接由compiler去掉了,因為when永遠不滿足。
試驗如下:
yu-fengdemacbook-2:~ yufeng$ erl Erlang (BEAM) emulator version 5.6.5 [async-threads:0] [hipe] [kernel-poll:false] Eshell V5.6.5 (abort with ^G) 1> {Mod,Code} = dynamic_compile:from_string("-module(test).\n-export([start/0]).\n start()->ok.\n"), code:load_binary(Mod, "test.erl", Code). {module,test} 2> m(test). Module test compiled: Date: October 6 2009, Time: 08.43 Compiler options: [] Object file: test.erl Exports: module_info/0 module_info/1 start/0 ok 3> test:start(). ok 4>
Post Footer automatically generated by wp-posturl plugin for wordpress.