这是我目前的常规
sudo nohup erl -sname foo -pa ./ebin -run foo_supervisor shell -noshell -noinput &
shell函数看起来像这样
shell() ->
{ok, Pid} = supervisor:start_link({local,?MODULE}, ?MODULE, _Arg = []),
unlink(Pid).
如果我不从shell取消链接,它会因某种原因立即停止。有没有办法可以像我通常那样启动我的应用程序,即应用程序:start(foo)。如果我也想开始sasl怎么办?另外,我还可以在哪里了解更多关于使用钢筋制作自包装的信息?
答案 0 :(得分:4)
<强>序。关于取消关联
在this other SO thread @filippo解释了为什么在测试shell中的主管时需要unlink
。
<强>首先。您需要的是Erlang application。
阅读文档:
在OTP中,申请表示a 实现某些特定的组件 功能,可以启动和 作为一个单位停止,哪个可以 也可以在其他系统中重复使用。
有关如何实施Erlang应用程序的详细信息here。您需要做的三件事是:
mod
参数)。<强>二。启动SASL。
在上面的应用程序资源文件中,您可以指定要在应用程序之前启动的应用程序列表。您将添加以下内容:
...
{applications, [kernel, stdlib, sasl]},
...
告诉它启动SASL。
<强>第三。钢筋。强>
介绍了Rebar here,它解释了如何使用Rebar帮助您完成上述步骤,将全新的应用程序打包到Erlang release以及如何启动它。