应用回调模块

如何启动和停止应用的代码,即监督树,由以下两个回掉函数来描述:

  1. start(StartType, StartArgs) -> {ok, Pid} | {ok, Pid, State}
  2. stop(State)

当要通过启动顶层督程来创建监督树的时候,会调用 start 。它要返回顶层督程的pid和一个选项值 State ,默认为 []。这个值会原样传递给 stop

StartType 通常是原子 normal 。只有在接管或故障转移中才会有其他值,参见 分布式应用StartArgs应用资源文件 中的键 mod 来定义。

在应用被停止之后会调用 stop/1 来进行必须的清除工作。注意应用实际的停止过程,也就是监督树的关闭,是按照 启动和停止应用 中所描述的方式自动处理的。

以下是一个例子,将来自 督程 一章中的督程打包为一个应用回调模块:

  1. -module(ch_app).
  2. -behaviour(application).
  3.  
  4. -export([start/2, stop/1]).
  5.  
  6. start(_Type, _Args) ->
  7. ch_sup:start_link().
  8.  
  9. stop(_State) ->
  10. ok.

一个库应用——不能被启动或者停止——则无须任何应用回调模块。