- 应用回调模块
应用回调模块
如何启动和停止应用的代码,即监督树,由以下两个回掉函数来描述:
- 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.
一个库应用——不能被启动或者停止——则无须任何应用回调模块。