今天主题是process_flag(trap_exit,true)这个函数
首先这个函数的作用是当你使用link/1或spwan_link/2函数是两个进程连接
在一起时,调用这个函数能捕捉其中的任一个进程退出的信号转化为消息
放到邮箱中。
以下这些是我从别的网站复制过来的,觉得解释的还是不错。
捕获进程退出的编程模式:
模式一:我不在乎创建的进程是否崩溃 创建一个并行进程,当被生成的进程崩溃时,当前进程不会察觉 Pid = spawn(Fun). 模式二:如果我创建的进程非正常的崩溃,我也消亡 Pid = spawn_link(Fun). 模式三:如果我创建的进程崩溃,我需要处理错误 process_flag(trap_exit, true), Pid = spawn_link(Fun), 在模式三中,我们可以在后面加上 receive {'EXIT',Pid,_Reason} -> FUN end.
这样我们可以接受当Reason是非正常的退出信号,可以用自己写FUN这部分的代码(立即或延迟重启该程序等等)
代替结束自己的行为,不至于像模式二当连接的进程非正常退出时就必须退出。
|