erlang进程监控:link和monitor
Erlang最开始是为了电信产品而发展起来的语言,因为这样的目的,决定了她对错误处理的严格要求。Erlang除了提供exception,try catch等语法,还支持Link和Monitor两种监控进程的机制,使得所有进程可以连接起来,组成一个整体。当某个进程出错退出时,其他进程都会收到该进程退出的消息通知。有了这些特点,使用erlang建立一个简单,并且健壮的系统就不是什么难事。
进程双向监控-Link
link方式可以建立进程之间的双向链接关系,当其中一个进程退出时,另一个进程会收到该进程退出的消息。
例子1:
1> test:start().Pid <0.39.0>Pid3 <0.40.0>ok%% 杀掉Pid进程,进程Pid3收到通知2> exit(pid(0,39,0),kill).pid exit: {'DOWN',#Ref<0.0.0.80>,process,<0.39.0>,killed}true3> test:start().Pid <0.43.0>Pid3 <0.44.0>ok%% 杀掉Pid3进程,进程Pid没有收到通知4> exit(pid(0,44,0),kill).true
注:解除monitor监控用erlang:demonitor(MonitorRef)