erlang - 无法从 yaws runmod 启动主管

标签 erlang yaws

我在 yaws.conf 中有一个 yaws runmod 定义为:

runmod = sg_app

该模块包含一个导出函数:

start()->
    io:format("~p start~n", [ sg_sup:start_link() ]).

当我启动雅司病时,我看到对 runmod 的调用:

=INFO REPORT==== 29-Oct-2015::16:46:51 === sync call sg_app:start

{ok,<0.61.0>} start

但是主管并不存在:

1> whereis(sg_sup).
undefined

如果我手动调用 runmod:start,主管就会挂起。

2> sg_app:start(). 
{ok,<0.73.0>} start
ok
3> whereis(sg_sup).
<0.73.0>

我做错了什么?

最佳答案

您的 runmod 的 start/0 函数正在使用 start_link/0 启动主管,这意味着它正在链接到父进程。当该进程终止时,由于链接,它会导致您的 runmod 进程随之关闭。 runmod 功能不是为启动监督树而设计的。

您可以考虑使用 yapp ,它允许您的代码作为常规 Erlang 应用程序在与 Yaws 相同的 Erlang 节点中运行,并注册为让 Yaws 将请求分派(dispatch)到其中。

关于erlang - 无法从 yaws runmod 启动主管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426727/

相关文章:

python - 事件关联和过滤——如何,从哪里开始?

erlang - 如何确定进程父进程的PID

erlang - ejabberd 新手如何设置功能齐全的 ejabberd 服务器?

rest - 二郎 YAWS : How to test a simple REST web service?

elasticsearch - 二郎disk_log : how to output raw text/JSON for interfacing with logstash?

sockets - 从套接字和另一个 Erlang 进程接收

ssl - Erlang YAWS https 税

node.js - NIO网络服务器之间的比较

erlang - 是否有可能使用 Erlang、Mnesia 和 Yaws 开发一个强大的网络搜索引擎?

github - 将 mod_confirm_delivery 模块转换为较新的二进制化 ejabberd 版本时出现的问题