Erlang监控事件管理器进程

 转载请注明,来自:http://blog.csdn.net/skyman_2001
 gen_event:start_link()可以产生一个事件管理器进程(an event manager),可以加到监控树里接受监控,这时Supervisor 的Child Specification中的Modules必须是dynamic

下面看一个简单的例子:

 logger_sup.erl:

-module(logger_sup).
-behaviour(supervisor).

-export([start_link/0 ,init/1]).

start_link() ->
	supervisor:start_link({local, ?MODULE}, ?MODULE, []).

init(_) ->
	{ok, {{one_for_one, 10, 10}, [
		{log_mgr, {logger, start_link, []}, permanent, 1000, worker, dynamic}
	]}}.


logger.erl:

-module(logger).   
-behaviour(gen_event).   
  
-export([start_link/0]).   
  
%% gen_event callbacks   
-export([init/1, handle_event/2, handle_call/2, terminate/2]).   
    
start_link() ->  
    case gen_event:start_link({local, log_mgr}) of   
        Result = {ok, _Pid} ->   
            gen_event:add_handler(log_mgr, ?MODULE, [abc]),   
            Result;   
        Other ->   
            Other   
    end. 

init(Args) ->
    io:format("logger handler init: ~p~n", [Args]),   
    {ok, Args}.

... ...

 

编译,运行:
1> logger_sup:start_link().

logger handler init: [abc]

{ok,<0.32.0>}

2> exit(whereis(log_mgr), kill).

logger handler init: [abc]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值