【问题标题】:Elixir: Stop an external system process when Application shuts downElixir:当应用程序关闭时停止外部系统进程
【发布时间】:2018-12-17 10:48:17
【问题描述】:
我们有一个依赖于 Tomcat 服务器的 elixir 应用程序。我们当前的策略是在应用程序启动时使用System.cmd 调用启动.war 文件。这可行,但如果应用程序(或更具体地说,运行启动命令的 GenServer)退出,我们还想关闭服务器。如何捕捉 GenServer 的退出并在退出之前运行另一个 System.cmd 调用?
【问题讨论】:
标签:
elixir
erlang-supervisor
gen-server
【解决方案1】:
你需要做的是实现一个terminate/2 回调。
在这里您甚至可以处理各种类型的终止原因,如:normal、:shutdown 或其他自定义原因。您只需要以下内容:
module MyServer do
use GenServer
# ...
def terminate(reason, state) do
# System call goes here
System.cmd "echo", ["I'll be back"]
end
end