我不确定我是否可以正确表达我的问题,但我会尽我所能。Erlang如何设置自包含的主管树应用程序
我觉得你必须设置一个主管树(sup,supress,和其他更复杂的树)的方式很尴尬。
让我们举个例子,下面的(我已经做出例子,它们扩展):http://learnyousomeerlang.com/supervisors
我不喜欢开始我的应用程序(导师树),然后无需发送ERL命令的想法在外壳上让应用程序按照我想要的方式行事。从网站采取底壳例如:
1> supervisor:start_child(band_supervisor, [djembe, good]).
Musician Janet Tennelli, playing the djembe entered the room
{ok,<0.690.0>}
2> supervisor:start_child(band_supervisor, [djembe, good]).
{error,{already_started,<0.690.0>}}
3> supervisor:start_child(band_supervisor, [drum, good]).
Musician Arnold Ramon, playing the drum entered the room
{ok,<0.696.0>}
3> supervisor:start_child(band_supervisor, [guitar, good]).
Musician Wanda Perlstein, playing the guitar entered the room
{ok,<0.698.0>}
4> supervisor:terminate_child(band_supervisor, djembe).
{error,simple_one_for_one}
5> musicians:stop(drum).
Arnold Ramon left the room (drum)
ok
对我来说很是怪异,我将不得不开始我的上司(或其他),然后在通过shell其他命令进一步类型得到我想要的东西。
对于一个现实世界的例子,让我们说例如我有一个监听主管,在这个主管我说我想总是有100个监听工作人员。他们的工作是监听Listen Supervisor创建的套接字。鉴于教程(和其他在线),我将不得不输入100次的shell来启动所有的孩子。
所以,我想我的问题是下面...
这怎么都可以申请或主管(但是要做到这一点)内完成的,所以什么也没被键入到外壳开始你的光束文件后。
我知道必须有一种方法,但我不能想出一个足够好的架构,允许我这样做是一种标准和干净的方式。
谢谢你的时间。
因此,对于每个listen_worker,我需要在listen_sup中有一个子规范?我以为我不需要那样做,只需要添加主管命令的孩子? – Mike5050
是的,你需要,当你开始一个新的孩子,你添加新的childspec主管的childspecs。 – Pouriya
所以我只需要一种方法来生成100个子规格......是否有一些代码会自动执行此操作? (他们都是同样的工人) – Mike5050