Erlang Can';t从yaws runmod启动主管
我在yaws.conf中定义了一个yaws runmod:Erlang Can';t从yaws runmod启动主管,erlang,yaws,Erlang,Yaws,我在yaws.conf中定义了一个yaws runmod: runmod = sg_app 该模块包含一个导出的函数: start()-> io:format("~p start~n", [ sg_sup:start_link() ]). 当我启动yaws时,我看到一个对runmod的调用: =信息报告===2015年10月29日::16:46:51===同步呼叫sg_应用程序:开始 {好的,}开始 但监管者不存在: 1> whereis(sg_sup). undefin
runmod = sg_app
该模块包含一个导出的函数:
start()->
io:format("~p start~n", [ sg_sup:start_link() ]).
当我启动yaws时,我看到一个对runmod的调用:
=信息报告===2015年10月29日::16:46:51===同步呼叫sg_应用程序:开始
{好的,}开始
但监管者不存在:
1> whereis(sg_sup).
undefined
如果我调用runmod:start manually,则主管将挂起
2> sg_app:start().
{ok,<0.73.0>} start
ok
3> whereis(sg_sup).
<0.73.0>
2>sg\u应用程序:开始()。
{好的,}开始
好啊
3> 在哪里(sg_sup)。
我做错了什么?您的runmod的
start/0
函数正在使用start\u link/0
启动主管,这意味着它正在链接到父进程。当该进程死亡时,由于链接的原因,它会使您的runmod进程随之停止。runmod
功能不是为启动监控树而设计的
您可以考虑使用A,它允许您的代码作为一个规则的Erlang应用程序运行在与Yaws相同的Erlang节点中,并被注册为将YAWS调度请求放入其中。
< P>另一个选项是使用单独生成的、无限的进程:start()->
spawn(fun () ->
application:start(my_app, permanent),
receive after infinity -> ok end
end).