进程单向监控-Monitor
link方式可以建立进程之间的双向链接关系,我们可以通过monitor实现单向的监控,这在gen_server代码里面可以看到对应的例子
- erlang:monitor(process, Caller), %建立单向监控
- 被监控进程死掉发送的消息规格: {'DOWN',Mref,process,Pid,Reason}
- 解除监控:erlang:demonitor(Ref)
shell例子
1> F = fun() -> io:format("finished.~n") end.
#Fun<erl_eval.20.111823515>
2> Pid = spawn(F).
finished.
<0.45.0>
3> erlang:monitor(process, Pid). % process Pid has already exited.
#Ref<0.0.0.76>
4> flush().
Shell got {'DOWN',#Ref<0.0.0.76>,process,<0.45.0>,noproc}
ok