通过脚本启动主管的问题 - Erlang

Wil*_*har 4 erlang

我已经制作了一个符合OTP标准的应用程序,我有一个gen_server和一个主管.我也有一个脚本来启动它们.

我的脚本包含这样的内容.erl -pa module_name/ebin -name abc @ hostname -setcookie test -s module_sup start_link()

这不会启动主管.但是当我在shell中执行module_sup:start_link()时,它可以工作.

此外,当我执行erl -pa module_name/ebin -name abc @ hostname -setcookie test -s module_srv start_link()即没有主管的服务器时,服务器启动.

那么,我在这里做错了什么.我们不允许以这种方式启动主管.

任何帮助都会受到高度关注.

Thanx,威尔逊

小智 5

supervisor:start_link/2创建一个指向其调用进程的链接.当调用进程退出时,主管将被删除.

erl -s module_sup start_link 正在启动主管,但它被杀死,因为你的启动函数在它自己的进程内运行,一旦函数退出就会死掉.

您可以观察spawn(module_sup, start_link, []). 到主管启动时的类似行为并立即被杀死.当您手动启动主管时,调用进程就是shell.当shell退出时,它会杀死主管.

通常,顶级主管应由应用程序启动.