我不確定我是否可以正確表達我的問題,但我會盡我所能。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