OTP應(yīng)用函數(shù) start/2

2018-10-13 14:26 更新

application:start/2

啟動一個應(yīng)用程序

用法:

start(Application, Type) -> ok | {error, Reason}

啟動應(yīng)用程序 Application。如果應(yīng)用程序沒有加載,應(yīng)用程序控制器首先會使用 application:load/1 函數(shù)把它加載。它將會確定所有要包含的應(yīng)用程序都加載進來。但是不會啟動它們。確保應(yīng)用程序 Application 的代碼能夠得到保護。

應(yīng)用程序控制器將會檢測應(yīng)用描述里的鍵 applications 的值,來確保應(yīng)用程序運行之前其他所有要包含進來的應(yīng)用程序都已經(jīng)啟動好了。如果沒,將返回 {error,{not_started,App}},App 是缺少沒有啟動的應(yīng)用程序。

應(yīng)用控制器會為應(yīng)用程序 Application 生成一個主應(yīng)用程序。那個主應(yīng)用程序來管理應(yīng)用程序 Application 里的所有進程。主應(yīng)用程序通過調(diào)用定義在應(yīng)用描述文件鍵 mod 里的回調(diào)函數(shù) Module:start/2 來啟動。

參數(shù) Type 指定應(yīng)用程序的類型,如果忽略,它的默認值則是 temporary。

如果一個類型是 permanent 的應(yīng)用程序崩潰,那么它的所有關(guān)聯(lián)應(yīng)用和整個 Erlang 節(jié)點都將關(guān)停;如果一個類型是 transient 的應(yīng)用程序以 normal 原因崩潰,那么它只報告崩潰信息,并不會關(guān)停其他跟它關(guān)聯(lián)的應(yīng)用。如果一個類型是 transient 的應(yīng)用程序不是以 normal 原因崩潰,那么它的所有關(guān)聯(lián)應(yīng)用和整個 Erlang 節(jié)點都將關(guān)停。如果一個類型是 temporary 的應(yīng)用程序崩潰,它只報告崩潰信息,并不關(guān)停其他關(guān)聯(lián)的應(yīng)用程序。

NOTE:調(diào)用 application:stop/1 函數(shù)總可以關(guān)停一個應(yīng)用程序,不管它是什么類型的應(yīng)用程序,不過其他應(yīng)用程序不會受到影響。

NOTE:類型是 transient 的應(yīng)用程序很少用到,因為當(dāng)一個監(jiān)控樹崩潰時,它崩潰原因是 shutdown,而不是 normal。

application:start(genfsm, temporary).
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號