Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang Can';t从yaws runmod启动主管_Erlang_Yaws - Fatal编程技术网

Erlang Can';t从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

我在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).
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).