[Erlang 學習筆記]關於 erlang application 的一些疑問

來源:互聯網
上載者:User

在嘗試application的發布時,有些不解的地方,求解  ->

官方文檔用例

ch_app.app

{application, ch_app,[{description, "Channel allocator"},{vsn, "1"},
{modules, [ch_app, ch_sup, ch3]},

{registered, [ch3]},{applications, [kernel, stdlib, sasl]},{mod, {ch_app,[]}}]}.

ch_app.erl

-module(ch_app).-behaviour(application).-export([start/2, stop/1]).start(_Type, _Args) ->ch_sup:start_link().stop(_State) ->ok.

一開始認為把模組打包成應用進行發布,是可以通過application:start(AppName).來回調每模組的start()方法來啟動各模組,從而啟動應用。

正如.app檔案的option選項

{modules, [ch_app, ch_sup, ch3]},

當啟動了application:start(ch_app)之後,回調到ch_app:start() 和 ch_sup:start()。

但可惜的是,實際上不是這樣的,

modules這個配置只是說明了application包括了那些模組,不是上面所想的作用,這樣我就覺得application的存在還有意義嗎?疑惑了- -

我直接用ch_app:start(_,_).來啟動都可以了

看看官方文檔裡面,對modules的解析是這樣的:

modules由該應用引入的所有模組。當產生啟動指令碼和tar檔案時, systools 將用到這個列表。一個模組必須被定義於且僅於一個應用。預設為[]。

從這裡可以知道,modules這個列表一方面標記某模組屬於此應用,另一方面當使用systools:make_tar(_Name)或systools:make_tar(_Name,[Option])的時候此列表將作為參數傳入。

那樣我對.app檔案的作用就有疑惑了。。。。

application的實質性意義是什嗎??

求解答。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.