在erlang进程里增加process_flag(trap_exit, true)的问题

来源:互联网 发布:mac版软件后缀 编辑:程序博客网 时间:2024/04/30 03:11
在erlang进程里加了 process_flag(trap_exit, true).
这个进程报错 监控进程 直接重起 没收到 错误信息
我现在用的 不是otp里的 是自己写的进程

解答:

--你貌似搞错了trap_exit的地方了。不是要死的process自我trap_exit, 而是他的监护process去trap_exit被监护的。也就是你不应该“在这个进程里加process_flag(trap_exit,true)", 而是在你“不是otp里的,自己写的“的监护process里加上trap_exit。你死掉的被监护的process自我无法trap_exit的,而且,因为你加的地方不是对的,直接一个‘EXIT’消息扩散到监护process, 而它却没有trap_exit, 会被连带干掉的(并继续扩散, 如果有上一级).

本文转载自:erlang中国(www.erlangchina.net)