Elixir:当应用程序关闭时,停止外部系统进程

时间:2018-07-09 17:17:36

标签: elixir supervisor gen-server

我们有一个依靠Tomcat服务器的elixir应用程序。我们当前的策略是在应用程序启动时通过.war调用来启动System.cmd文件。这可行,但是如果应用程序(或更具体地说,运行启动命令的GenServer)退出,我们也想关闭服务器。如何在退出前赶上GenServer的出口并运行另一个System.cmd调用?

1 个答案:

答案 0 :(得分:2)

您需要在其中实现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