1. 程式人生 > >系統技術非業餘研究 » Erlang動態編譯載入模組

系統技術非業餘研究 » Erlang動態編譯載入模組

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.