gpt4 book ai didi

Erlang - 从主管模块启动一个 child

转载 作者:行者123 更新时间:2023-12-05 00:34:10 24 4
gpt4 key购买 nike

我正在尝试创建一个处理添加动态 gen_servers 的主管。出于某种原因,某些事情失败了,我不确定是什么。

-module(supervisor_mod).
-behaviour(supervisor).

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

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

init(_Args) ->
{ok, {{simple_one_for_one, 10, 60},
[{example_proc, {example_proc, start_link, []},
permanent, brutal_kill, worker, [example_proc]}]}}.

add_child(Name)->
supervisor:start_child(supervisor_mod,
{example_proc, {example_proc, start_link, []},
permanent, brutal_kill, worker, [example_proc]}).


-module(example_proc).
-behaviour(gen_server).

-export([start_link/0]).
-export([init/1, handle_call/3, handle_cast/2]).

start_link() ->
gen_server:start_link(?MODULE, [], []).

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

handle_call(alloc, From, State) ->
{reply, From, State}.

handle_cast({free, _Ch}, State) ->
{noreply, State}.

在 erl 外壳中:
Eshell V5.8.2  (abort with ^G)
1> supervisor_mod:start_link().
{ok,{ok,<0.33.0>}}
2> supervisor_mod:add_child(aa).
{error,{'EXIT',{badarg,[{erlang,apply,
[example_proc,start_link,
{example_proc,{example_proc,start_link,[]},
permanent,brutal_kill,worker,
[example_proc]}]},
{supervisor,do_start_child_i,3},
{supervisor,handle_call,3},
{gen_server,handle_msg,5},
{proc_lib,init_p_do_apply,3}]}}}

任何帮助/解释/解决方案表示赞赏,
/秒。

最佳答案

阅读 OTP Doc:在简单的一对一策略的情况下,在 start_child 函数中,您可以将参数作为子项的子 start_link 函数的列表传递。

关于Erlang - 从主管模块启动一个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com