• 应用回调模块

    应用回调模块

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

    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.

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