Erlang中文论坛

标题: 持续更新。。。。 [打印本页]

作者: high佬全    时间: 2015-1-21 00:14
标题: 持续更新。。。。
  今天主题是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这部分的代码(立即或延迟重启该程序等等)
代替结束自己的行为,不至于像模式二当连接的进程非正常退出时就必须退出。






欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3