应用程序停止运行时退出VM

时间:2014-05-24 11:12:55

标签: erlang

我有一个装有Rebar的Erlang应用程序,它意味着作为服务运行。它与其他实例集合在一起。

我注意到的一件事是,如果应用程序在一个节点上崩溃,即使应用程序达到其主管的重启限制并且永远消失,Erlang VM仍会保持运行状态。结果是群集中的其他节点在尝试与应用程序通信之前不会发现任何事情。

是否有一种简单的方法可以将VM链接到根管理程序,以便应用程序在崩溃时关闭整个VM?

1 个答案:

答案 0 :(得分:3)

使用application:start()启动应用程序时,可以将可选的Type参数添加为原子permanenttransienttemporary之一。我想你正在寻找permanent

application:start/2中所述:

  • 如果永久应用程序终止,则所有其他应用程序和整个Erlang节点也将终止。
  • 如果瞬态应用程序因Reason == normal而终止,则会报告此情况,但不会终止其他应用程序。如果瞬态应用程序异常终止,则所有其他应用程序和整个Erlang节点也将终止。
  • 如果临时应用程序终止,则会报告此情况,但不会终止其他应用程序。