erlang链接进程之间的关系

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:_。

转载于:https://www.cnblogs.com/huangxiaoyi/p/4788459.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值