Erlang应用程序start / 2不会执行

Gextra

这是我可以提出的最基本的应用程序,我无法理解为什么应用程序模块功能的start / 2不会记录消息。这是我所做的:

1)应用配置文件(test_app.app):

{application,test_app,
             [{description,"Test App"},
              {vsn,0.9},
              {applications,[kernel,stdlib]},
              {modules,[test_app,log_utils]},
              {registered,[test_app]}]}.

2)应用模块(test_app.erl):

-module(test_app).
-behaviour(application).
-export([start/2, stop/1]).
-export([test/0]).

start(_Type, _Args) ->
    log_utils:info("here at APP START 1"),
    master_sup:start_link({10,20,30}). 

stop(_State) ->
    ok.

test() ->
    log_utils:info("here at APP START 2"),
    master_sup:start_link({10,20,30}).

然后,我这样进行编译和测试:

1> application:start(test_app).
ok
2> test_app:test().
==INFO REPORT==== 27-Oct-2013::19:53:29 ===
"here at APP START 2"

期望的是,application:start(test_app)将执行start / 2函数并像test / 0函数一样记录消息

实际上,我有一个更复杂的示例,其中我启动了主管,但是类似地,我在app模块中创建的API也会导致错误,指示start_link不起作用。如果我调用启动监督程序的测试功能,那么它将起作用。

病毒

您需要为该.app文件提供一个附加选项,以提供应用程序回调模块并启动args。没有隐式的回调模块名称,如果没有给出,则不会启动任何进程。该选项{mod,{CallBackMod,StartArgs}}使整个.app文件变为:

{application,test_app,
 [{description,"Test App"},
  {vsn,0.9},
  {applications,[kernel,stdlib]},
  {modules,[test_app,log_utils]},
  {registered,[test_app]},
  {mod,{test_app,[]}}]}.

test_app在您的情况下,第二个元素应用程序名称,而不是回调模块;他们不必相同。如果给出了回调,Mod:start/2则将在启动应用程序以及Mod:stop/1停止应用程序时调用

请注意,应用程序在启动时不必运行任何进程,例如,stdlib应用程序无需运行。

您可以在“应用程序”中找到更好的描述

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Erlang:使用超级用户:start_child / 2在gen_server:init / 1内添加新的子代将挂断应用程序

来自分类Dev

从应用程序更新不会执行查询,但是从url执行将执行查询

来自分类Dev

程序不会执行pthread

来自分类Dev

Shell Vs Process.start用于执行外部应用程序

来自分类Dev

在真正的GPS应用程序也运行之前,Nativescript定位模块不会执行

来自分类Dev

如何在本地启动 Angular 2 应用程序,因为 npm start 不起作用

来自分类Dev

部署Erlang应用程序

来自分类Dev

程序不会崩溃也不会完全执行

来自分类Dev

QT应用程序不会退出

来自分类Dev

Azure不会覆盖应用程序设置

来自分类Dev

我的应用程序不会显示ActionBar

来自分类Dev

DirectX应用程序不会绘制

来自分类Dev

Fabric不会让应用程序运行

来自分类Dev

AndroidStudio 不会更改应用程序

来自分类Dev

我无法使用npm start运行angular2应用程序,但是,如果我使用npm run lite,则该应用程序会弹出适当的错误消息

来自分类Dev

Django执行cmd应用程序

来自分类Dev

从C#应用程序执行ScriptCS

来自分类Dev

Purescript应用程序不执行

来自分类Dev

在应用程序退出之前执行功能

来自分类Dev

如果应用程序崩溃,执行代码?

来自分类Dev

特定Xamarin应用程序的执行主题

来自分类Dev

Django执行cmd应用程序

来自分类Dev

暂停执行angularjs应用程序

来自分类Dev

开发用于执行联网的应用程序?

来自分类Dev

Purescript应用程序不执行

来自分类Dev

如果应用程序崩溃,执行代码?

来自分类Dev

AutoIT执行应用程序热键

来自分类Dev

无限执行应用程序的终端命令

来自分类Dev

任务应用程序执行失败:compileDebugJavaWithJavac

Related 相关文章

热门标签

归档