• 退出信号

    退出信号

    当接收到 {'EXIT',Pid,ExitReason} 信号时, Erlang 的行为可以描述成如下代码:

    1. if(ExitReason == kill)then
    2. broadcast(killed) % note we change ExitReason
    3. die
    4. else
    5. if(trapping exits)then
    6. add {'EXIT', Pid, ExitReason}
    7. to input mailbox
    8. else
    9. if(ExitReason == normal) then
    10. continue
    11. else
    12. broadcast(ExitReason)
    13. die
    14. endif
    15. endif
    16. endif

    如果进程表示符为 Sender 的进程运行一个简单的函数 exit(Pid,Why) ,那么进程 Pid 就会收到一个代表进程 Sender好像死亡的消息 {'EXIT',Source,Why}

    如果进程正常终止,把信号 {'EXIT',Source,normal} 发送到所有的链接进程.

    函数 exit(Pid,kill) 产生一个无法销毁的消息,它使的接收进程无条件死亡,把退出的原因改为 killed 并把退出的原因发送给所有的链接进程(如若不然,可能使服务器意想不到的崩溃).