[Erlang 学习笔记]关于 erlang application 的一些疑问

在尝试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的实质性意义是什么??

求解答。。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值