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

Elixir:当应用程序关闭时停止外部系统进程,elixir,erlang-supervisor,gen-server,Elixir,Erlang Supervisor,Gen Server,我们有一个依赖于Tomcat服务器的elixir应用程序。我们当前的策略是在应用程序启动时使用System.cmd调用启动.war文件。这是可行的,但是如果应用程序(或者更具体地说,运行startup命令的GenServer)退出,我们也希望关闭服务器。如何捕获GenServer的退出并在退出之前运行另一个System.cmd调用?您需要在那里执行回调 在这里,您甚至可以处理各种类型的终止原因,如:normal、:shutdown或其他自定义原因。您只需要以下内容: module MyServe

我们有一个依赖于Tomcat服务器的elixir应用程序。我们当前的策略是在应用程序启动时使用
System.cmd
调用启动
.war
文件。这是可行的,但是如果应用程序(或者更具体地说,运行startup命令的GenServer)退出,我们也希望关闭服务器。如何捕获GenServer的退出并在退出之前运行另一个
System.cmd
调用?

您需要在那里执行回调

在这里,您甚至可以处理各种类型的终止原因,如
: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