您的位置:首页 > 移动开发

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

2012-05-23 20:44 405 查看
在尝试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的实质性意义是什么??求解答。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: