erlang链接进程之间的关系
2015-09-07 11:43
197 查看
1.process_flag(trap_exit,false),是默认行为:
“A进程”和“B进程”相互链接,(1)如果“A进程”异常退出“B进程”也随之退出;(2)如果“A进程”正常退出,“B进程”不做任何处理,继续运行。
2.process_flag(trap_exit,true):
“A进程”和“B进程”相互链接,“B进程”设置了process_flag(trap_exit,true),这样“B进程”接受到“A进程”的退出信号,并自行处理。
捕获进程退出的编程模式:
模式一:我不在乎创建的进程是否崩溃
创建一个并行进程,当被生成的进程崩溃时,当前进程不会察觉
Pid = spawn(Fun).
模式二:如果我创建的进程非正常的崩溃,我也消亡
Pid = spawn_link(Fun).
模式三:如果我创建的进程崩溃,我需要处理错误
process_flag(trap_exit, true),
Pid = spawn_link(Fun),
process_flag(trap_exit,true)与try link(Pid) catch
process_flag(trap_exit,true)时不能try link(Pid) catch
process_flag(trap_exit,true)把一个进程变成系统进程,捕捉推出信号,并将这些信号和其他消息一样保存在进程信箱中。
在process_flag(trap_exit,true)时,不能对link(Pid)进行try...catch,无论Pid是否存在都catch不到错误。
当Pid不存在时,进程信箱将收到{'EXIT',Pid,noproc}的消息,同时进程继续执行,而不是报错中断。
在process_flag(trap_exit,false)时,link(Pid),当Pid不存在时可以catch到error:_。
“A进程”和“B进程”相互链接,(1)如果“A进程”异常退出“B进程”也随之退出;(2)如果“A进程”正常退出,“B进程”不做任何处理,继续运行。
2.process_flag(trap_exit,true):
“A进程”和“B进程”相互链接,“B进程”设置了process_flag(trap_exit,true),这样“B进程”接受到“A进程”的退出信号,并自行处理。
捕获进程退出的编程模式:
模式一:我不在乎创建的进程是否崩溃
创建一个并行进程,当被生成的进程崩溃时,当前进程不会察觉
Pid = spawn(Fun).
模式二:如果我创建的进程非正常的崩溃,我也消亡
Pid = spawn_link(Fun).
模式三:如果我创建的进程崩溃,我需要处理错误
process_flag(trap_exit, true),
Pid = spawn_link(Fun),
process_flag(trap_exit,true)与try link(Pid) catch
process_flag(trap_exit,true)时不能try link(Pid) catch
process_flag(trap_exit,true)把一个进程变成系统进程,捕捉推出信号,并将这些信号和其他消息一样保存在进程信箱中。
在process_flag(trap_exit,true)时,不能对link(Pid)进行try...catch,无论Pid是否存在都catch不到错误。
当Pid不存在时,进程信箱将收到{'EXIT',Pid,noproc}的消息,同时进程继续执行,而不是报错中断。
在process_flag(trap_exit,false)时,link(Pid),当Pid不存在时可以catch到error:_。
相关文章推荐
- Java File类的介绍
- zookeeper 客户端编程的使用
- Android studio 无法在线更新解决
- 委托者模式
- zookeeper的安装
- awk取反
- js+css实现超简洁的二级下拉菜单效果代码
- 一片关于Session&Cookie关系不错的文章
- 生产服务器环境最小化安装后 Centos 6.5优化配置备忘
- tcpdump追查问题
- android手机连接电脑myeclipse服务器做联机测试
- expect用法
- SSL与TLS的区别以及介绍
- struts2截取字符串
- 支付宝支付设计和开发方案
- [Java基础] 深入jar包:从jar包中读取资源文件
- 架构师速成-架构的目标
- 2016腾讯笔试题编程题
- zookeeper集群安装
- 【游戏科普】使用心理学法则创建优秀的用户界面