应用回调模块
应用回调模块
如何启动和停止应用的代码,即监督树,由以下两个回掉函数来描述:
start(StartType, StartArgs) -> {ok, Pid} | {ok, Pid, State}
stop(State)
当要通过启动顶层督程来创建监督树的时候,会调用 start 。它要返回顶层督程的pid和一个选项值 State ,默认为 []。这个值会原样传递给 stop 。
StartType 通常是原子 normal 。只有在接管或故障转移中才会有其他值,参见 分布式应用 。 StartArgs 由 应用资源文件 中的键 mod 来定义。
在应用被停止之后 会调用 stop/1 来进行必须的清除工作。注意应用实际的停止过程,也就是监督树的关闭,是按照 启动和停止应用 中所描述的方式自动处理的。
以下是一个例子,将来自 督程 一章中的督程打包为一个应用回调模块:
-module(ch_app).
-behaviour(application).
-export([start/2, stop/1]).
start(_Type, _Args) ->
ch_sup:start_link().
stop(_State) ->
ok.
一个库应用——不能被启动或者停止——则无须任何应用回调模块。
