2012-04-25 96 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