日期:2015年02月04日

要了解Erlang Application中文件和模块是如何使用的,就必须知道启动一个Application时所发生的事件。

文件组织结构

假设有如下的文件组织结构:

server1.erl
server2.erl
event_handler.erl
example_sup.erl
example_app.erl
example.app
elog.config

启动序列

1. 启动系统

$ erl -boot start_sasl -config elog.config
1> application:start(example).

Erlang应用程序控制器会在example.app中寻找一个{mod, ...}声明。它包含应用程序控制器的名称,这里假设为example_app

2. Application回调

example_app:start/2被调用。

3. 启动监控器

example_app:start/2中将调用example_sup:start_link/2启动example监控器

4. Supervisor回调

example_sup:init/1被回调,做一些初始化操作,例如安装错误处理器,然后返回一个监控规范。这个监控规范说明了如何去启动工作进程,例如server1server2

5. 启动工作进程

example监控器根据监控规范逐一启动相应工作进程。

6. 停止系统

2> application:stop(example). % or init:stop().

使用init:stop()关闭系统,所有运行中的应用程序会按顺序一一关闭。


分类

标签