【问题标题】:How to start a newly added supervisor without restarting the server in erlang?如何在不重新启动erlang中的服务器的情况下启动新添加的主管?
【发布时间】:2014-10-25 06:12:54
【问题描述】:

我们有一个在远程节点上运行的服务器。现在我们想在不停止服务器的情况下添加一个新特性(由 gen_* 实现)。所以我使用 rpc:call(Node, my_sup, start_link, []) 来启动主管。但不幸的是,我发现主管链接到我的本地 shell 而不是远程节点,并且在 rpc:call 之后它立即失败(sup 进程被杀死)。

我只是想知道有没有其他方法可以动态远程启动新添加的主管?

【问题讨论】:

    标签: erlang erlang-supervisor


    【解决方案1】:

    主管总是必须与某事联系起来。通常,OTP 应用程序在其start 方法中生成“根监督者”,监督所有其他进程和其他监督者。它与启动应用程序的进程相关联。

    如果你有这样的root supervisor,你可以使用supervisor:start_child(SupRef, ChildSpec)SupRef 是对“根主管”的引用(可能是 Pid 或名称),ChildSpec 是主管,您想要生成或 gen_server 本身。这个函数记录在这里:

    http://www.erlang.org/doc/man/supervisor.html#start_child-2

    如果您没有监督树。您可以将新功能打包为 OTP 应用程序,它会在启动时生成第一个主管。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多