[英]Stopping an Erlang supervisor?
我正在嘗試測試一個包含主管和兩個(不同)工作人員的應用程序。 我正在使用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>}}}
,這意味着我的主管仍在運行。
我如何能:
發送shutdown
信號以使主管殺死其子節點並退出:
exit(Pid, shutdown).
您可能必須首先取消測試過程與測試的關聯。
監視進程,等待它退出:
Ref = monitor(process, Pid), receive {'DOWN', Ref, process, Pid, _Reason} -> ok after 1000 -> error(exit_timeout) end.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.