退出信号

当接收到 {'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 并把退出的原因发送给所有的链接进程(如若不然,可能使服务器意想不到的崩溃).