【发布时间】:2014-09-12 06:18:28
【问题描述】:
据我了解,一个监督进程可以监督 Erlang/OTP 行为模型中的多个进程。
这些进程可以是gen_server、gen_fsm, 和gen_event。我的问题是,普通进程能否由 Erlang/OTP 中的主管进程监督?我所说的普通进程是指不是gen_server、gen_fsm 或gen_event 的进程。
如果是这样,流程规范会是什么样子?我在下面尝试但不起作用:
Spec = {Id, {my_module, my_function, [Par1, ..., ParN]}, permanent, 5000, worker, [my_module]}
我也试过这个:
Spec = {Id, {my_module, my_function, [Par1, ..., ParN]}, permanent, 5000, worker, []}
但是当我用 gen_server 模块和其中的函数替换模块和函数时,效果很好。
我可以断定主管的子进程不能是普通进程吗?
我得到的错误是:
错误如下:应用程序:myapp 退出:{bad_return, {{myapp_app,start,[正常,[]]}, {'出口', {{失败匹配, {错误, {关掉, {failed_to_start_child,worker_1, {ok,state}}}}}, [{myapp_app,开始,2, [{file,"src/myapp_app.erl"},{line,27}]}, {application_master,start_it_old,4, [{file,"application_master.erl"},{line,272}]}]}}}}
【问题讨论】:
-
你怎么知道它不起作用?
-
显然,我运行了它,并得到了错误。
-
你遇到了什么错误?
-
我的问题是:一个普通的进程可以被一个supervisor进程监督吗?
-
在不使用标准行为的情况下适合受监督树的进程称为“特殊进程”,原则上应遵循in the Sys and Proc_Lib chapter of the OTP Design Principles User Guide 描述的准则 - 但实际上您通常可以忽略那些指导方针。这就是我询问错误消息的原因:您的问题中没有任何内容可以提供任何关于出现问题的线索。
标签: erlang