【问题标题】:How to add a child to a erlang supervisor?如何将孩子添加到 erlang 主管?
【发布时间】:2017-09-20 04:26:48
【问题描述】:

我正在尝试将事件管理器添加到主管,但出现如下错误:

1> test_event_call:start_link().
{ok,<0.85.0>}
2> test_event_call:start_event().
{error,{ok,{child,undefined,test_event_proc,
                  {test_event,start,[]},
                  transient,200000,worker,
                  [test_event]}}}

主管模块是test_event_call.erl:

-module(test_event_call).
-behaviour(supervisor).
-export([start_link/0, start_event/0, init/1]).

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

start_event() ->
    supervisor:start_child(?MODULE, {test_event_proc,
                                     {test_event, start, []},
                                     transient, 200000, worker, [test_event]}).

init(_Args) ->
    {ok, {{one_for_one, 1, 5}, []}}.

孩子是test_event.erl:

-module(test_event).
-behaviour(gen_event).
-export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2, code_change/3]).


-export([start/0, log_fun/2]).

start() ->
    {ok, _Pid} = gen_event:start_link({local, ?MODULE}),
    gen_event:add_handler(?MODULE, ?MODULE, []).

谁能帮我解决这个错误?

【问题讨论】:

  • 尝试从test_event:start()返回{ok, Pid},而不是返回gen_event:add_handler/3的返回值。

标签: linux erlang erlang-otp


【解决方案1】:

返回 {ok, Pid} 解决了我的问题。

【讨论】:

  • 您必须指定评论的作者或对它的补充,而不仅仅是复制它。
猜你喜欢
  • 2017-05-02
  • 2019-04-27
  • 2012-11-11
  • 2015-01-07
  • 2014-06-17
  • 2017-05-02
  • 1970-01-01
  • 2021-03-16
  • 2012-06-22
相关资源
最近更新 更多