主管:不能通过pid终止孩子

时间:2017-02-10 10:33:10

标签: elixir otp

尝试通过其pid终止子项不起作用,它应该根据文档:https://hexdocs.pm/elixir/1.3.3/Supervisor.html#terminate_child/2

iex(7)> {:ok, sup} = Supervisor.start_link([], strategy: :one_for_one)                           
{:ok, #PID<0.383.0>}
iex(8)> {:ok, pid} = Supervisor.start_child(sup, worker(RData.ExpectedRefurbishmentCost, [self()]))
{:ok, #PID<0.385.0>}
iex(9)> Supervisor.terminate_child(sup, pid)                                                       
{:error, :not_found}

任何使它运作的线索?

1 个答案:

答案 0 :(得分:3)

您需要将子ID转移到terminate_child以获取除:simple_one_for_one以外的所有策略。因此,对于:one_for_one,以下内容适用于您,因为如果未提供id Supervisor.Spec.worker/3,则Supervisor.terminate_child(sup, RData.ExpectedRefurbishmentCost) 设置为模块:

.ignore