我最近遇到了一个错误,整个 Erlang 应用程序都死了,产生了如下所示的日志消息:
=INFO REPORT==== 11-Jun-2010::11:07:25 ===
application: myapp
exited: shutdown
type: temporary
我不知道是什么触发了这次关闭,但我遇到的真正问题是它没有自行重启。相反,现在空无一物的 Erlang VM 只是坐在那里无所事事。
现在,根据我所做的研究,您可以为应用程序提供其他“启动类型”:“瞬态”和“永久”。
如果我在应用程序中启动主管,我可以告诉它使特定进程成为临时或永久的,它会自动为我重新启动它。但是,根据文档,如果我将应用程序设为临时或永久,它不会在它死时重新启动它,而是会杀死所有其他应用程序。
我真正想做的是以某种方式告诉 Erlang VM 一个特定的应用程序应该始终运行,如果它出现故障,重新启动它。这可能吗?
(我不是在谈论在我的应用程序之上实现一个主管,因为这是一个问题 22:如果我的主管进程崩溃了怎么办?我正在寻找某种 API 或设置,我可以用它来让 Erlang 监视器和为我重新启动我的应用程序。)
谢谢!