Erlang 主管是否需要成立自己的主管?

Erlang 主管是否需要成立自己的主管?,erlang,otp,erlang-supervisor,Erlang,Otp,Erlang Supervisor,假设我有一个主管,我需要为此主管执行一些start\u child。我必须先启动所有的启动我的主管吗?或者我只能supervisor:start_child(my_sup,[])而不启动my_sup?首先,您可以创建一个supervisor进程,作为调用或的监督树的一部分。创建的监控进程调用模块:init/1,以了解重启策略、最大重启频率和子规范 这是主管启动的示例代码(不过,您可以启动其他gen_*模块): 元组{ch3,…}是一个,其定义如下: {Id, StartFunc, Restart

假设我有一个主管,我需要为此主管执行一些
start\u child
。我必须先启动所有的启动我的主管吗?或者我只能
supervisor:start_child(my_sup,[])
而不启动my_sup?

首先,您可以创建一个supervisor进程,作为调用或的监督树的一部分。创建的监控进程调用
模块:init/1
,以了解重启策略、最大重启频率和子规范

这是主管启动的示例代码(不过,您可以启动其他gen_*模块):

元组
{ch3,…}
是一个,其定义如下:

{Id, StartFunc, Restart, Shutdown, Type, Modules}
上例中启动服务器
ch3
的子规范如下所示:

{ch3, {ch3, start_link, []}, permanent, brutal_kill, worker, [ch3]}
从该示例中,您可以看到模块
ch3
将由主管启动、监控和停止,您还可以看到指定了通常使用的
one-for-one
<在子规范中,code>one_for_one意味着如果一个子进程终止并应该重新启动,则只有该子进程受到影响,这可能就是您的情况。您的子进程由主管自动启动、监视、重新启动和停止

用于向启动相应子进程的supervisor
SupRef
动态添加子规范


因此,始终首先启动supervisor,然后根据重新启动策略自动或手动启动其子进程

是的,您应该首先启动supervisor,因为您不会启动子进程,因为启动子进程的是监督者。希望能有帮助

我认为这个问题还没有得到回答。。。请详细说明你需要先启动主管,因为它是主管,然后启动孩子。残忍的杀戮并不总是你想要的。它并没有赋予流程以整洁的方式清理自身的能力。是的。如果子进程需要一些时间来关闭,那么Value
int()>=0
是关闭子进程的更好方法。如果子进程是另一个主管,则还可以使用
无限
。OP可能想看看这个部分。
{ch3, {ch3, start_link, []}, permanent, brutal_kill, worker, [ch3]}