设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15550|回复: 0
打印 上一主题 下一主题

持续更新。。。。

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-21 00:14:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  今天主题是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这部分的代码(立即或延迟重启该程序等等)
代替结束自己的行为,不至于像模式二当连接的进程非正常退出时就必须退出。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-22 00:16 , Processed in 0.368673 second(s), 10 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表