应用控制器

当启动了Erlang运行时系统,作为Kernel应用的一些进程会被启动。其中一个进程是应用控制器进程,注册为 application_controller

所有对应用的操作都由应用控制器来协调。它通过模块 application 里的函数来暴露接口, 请参考 application(3) 。尤其要了解,应用可以被加载、卸载、启动和停止。

加载和卸载应用

在能启动一个应用之前,首先它必须被加载。应用控制器会读取在 .app 中的信息并存起来。

  1. 1> application:load(ch_app).
  2. ok
  3. 2> application:loaded_applications().
  4. [{kernel,"ERTS CXC 138 10","2.8.1.3"},
  5. {stdlib,"ERTS CXC 138 10","1.11.4.3"},
  6. {ch_app,"Channel allocator","1"}]

被停止的或者从未启动过的应用,可以被卸载。该应用相关的信息会从应用控制器的内部数据库中删除。

  1. 3> application:unload(ch_app).
  2. ok
  3. 4> application:loaded_applications().
  4. [{kernel,"ERTS CXC 138 10","2.8.1.3"},
  5. {stdlib,"ERTS CXC 138 10","1.11.4.3"}]

Note

加载/卸载应用并不会加载/卸载该应用所使用的代码。代码加载是按照一般的方式进行的。