3
私は上司にイベントマネージャを追加しようとしていますが、私はこのようなエラーを得た:erlangの管理者に子供を追加するにはどうすればいいですか?
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, []).
誰でもこのエラーが発生しましたか?
'gen_event:add_handler/3'の戻り値を返すのではなく、' test_event:start() 'から' {ok、Pid} 'を返そうとしてください。 – Dogbert
あなたはおそらく、私のブログ記事「Erlangの監視イベントハンドラ」を見てください。http://blog.differentpla.net/blog/2014/11/07/erlang-sup-event –