2012-04-25 95 views
1

我有這樣的my_sup.erl功能:如何在Erlang中跟蹤函數調用?

init([ems_media_sup]) -> 
    {ok, {{simple_one_for_one, ?MAX_RESTART, ?MAX_TIME}, [ 
    {ems_media_sup, {ems_media, start_link, []}, temporary, 2000, worker, [ems_media]}] 
}}; 

但沒有命名ems_media.erl START_LINK/1功能,我想知道爲什麼會出現運行時沒有錯誤

supervisor:start_link(?MODULE, [ems_media_sup]) 

那麼,如何知道電話的init([ems_media_sup])

回答

3

這是因爲my_supsimple_one_for_one型之後接下來發生的事情 - 所以它只會啓動子進程時,明確要求通過這樣做。

如果主管曾它會嘗試啓動所有的孩子在啓動子規範的任何其他類型的(one_for_oneone_for_allrest_for_one)的,但simple_one_for_one主管是創建大量兒童,只有改變他們的參數列表,所以在這種情況下,init函數中的子規範僅扮演模板的角色。

+0

好的答案我認爲,稍後會深入研究 – why 2012-04-25 10:09:50