gpt4 book ai didi

erlang - 停止 Erlang 主管?

转载 作者:行者123 更新时间:2023-12-04 18:08:22 25 4
gpt4 key购买 nike

我正在尝试测试我的应用程序的一部分,其中包括一个主管和两个(不同的) worker 。我正在使用 eunit,所以在我的设置和清理中,我有:

setup() ->
{ok, Pid} = foo_sup:start_link(),
Pid.

cleanup(Pid) ->
exit(Pid, kill).
foo_sup:start_link/0定义为:
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).

但是,当我的测试运行时,我得到 {badmatch,{error,{already_started,<0.188.0>}}} ,这意味着我的主管仍在运行。

我如何能:
  • 发出信号让主管停止自己及其所有 child ?
  • 等待完成?
  • 最佳答案

  • 发送 shutdown发出信号让主管杀死它的 child 并退出:
    exit(Pid, shutdown).

    您可能必须先从测试中取消该过程的链接。
  • 监控进程,等待它退出:
    Ref = monitor(process, Pid),
    receive
    {'DOWN', Ref, process, Pid, _Reason} ->
    ok
    after 1000 ->
    error(exit_timeout)
    end.
  • 关于erlang - 停止 Erlang 主管?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21138442/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com