나는 erlang : monitor/2를 사용하여 gen_server를 모니터하려고했습니다. 불행히도 이것을 시도 할 때마다 Erlang 쉘은 무한 루프에 빠지게됩니다.gen_server 모니터링
다음은 이것을 테스트하기 위해 작성한 테스트 프로그램입니다.
-module(testmon).
-compile(export_all).
start() ->
{ok,Proc} = gen_server:start(calc,[],[]),
erlang:monitor(process,Proc),
receive
{'DOWN', Ref, process, Pid, normal} ->
io:format("~p said that ~p died by natural causes~n",[Ref,Pid]);
{'DOWN', Ref, process, Pid, Reason} ->
io:format("~p said that ~p died by unnatural causes~n~p",[Ref,Pid,Reason])
end.
나는이 산란 같은 (재미() -> 확인 끝) 모니터하기 위해 위의 코드를 사용할 때 (행 6을 변경하여 및 7) 얼랑하기 : 모니터 (산란 (재미() -> 확인 끝)) 위의 코드는 의도 한대로 작동합니다.
누군가 내가 잘못하고있는 것을 보여줄 수 있습니까? 감독관을 통해 gen_server 프로세스를 모니터링하는 것만 가능합니까? gen_server 어떤 이유로 죽을 때까지
그것은 무한 루프 (모든 얼랑에는 루프가없는)이 아니다 당신
이 보인다. 또한 끝에 '1000 -> timeout'절을 추가하면 디버그하는 데 도움이 될 수 있습니다. – Lukas
첫 번째 및 두 번째 줄의 시작 기능 ?? 첫 번째 구문 오류입니다. – user425720
수정 됨 : 실수로 붙여 넣을 때 실수로 코드가 엉망입니다. 이것이 내가 원래 의도했던 것입니다. 감사합니다. –