[Erlang 002] -Application构建

本文详细描述了如何使用Erlang构建test.app模块,包括`test_app`和`test_sup`模块的启动过程,以及Erlang启动应用程序时可能遇到的问题,如正确指定文件路径和理解启动参数如-pa和-extra的含义。
摘要由CSDN通过智能技术生成

Application 构建

test.app

{application,test,
    [{description,"Test application"},
        {vsn,"1.0.0"},
        {modules,[test_app,test_sup]},
        {registered,[test_app]},
        {mod,{test_app,[]}},
        {env,[]},
        {applications,[kernel,stdlib]}]}.

test_app.erl

-module(test_app).

-behaviour(application).

-export([start/2, stop/1]).

start(_Type, StartArgs) ->
    io:format("test app start~n"),
    case test_sup:start_link(StartArgs) of
        {ok, Pid} ->
            {ok, Pid};
        Error ->
            io:format("test app start error ~p", [Error]),
            Error
    end.

stop(_State) ->
    ok.

test_sup.erl

-module(test_sup).
-behaviour(supervisor).

-export([start_link/1, init/1]).

start_link(_) ->
    io:format("test sup start link~n"),
    supervisor:start_link({local, ?MODULE}, ?MODULE, []).


init([]) ->
    io:format("test sup init~n"),
    {ok,{
        {one_for_one, 1, 60},
        []}
    }.

步骤:

控制台输入启动test

application:start(test).

然后启动失败
在这里插入图片描述
大家可以看看为什么没启动失败,遵循application的目录结构放置对应文件
在这里插入图片描述
有预感到可能是文件位置导致的启动失败,但是网上大家都是用的application:start()去启动,后面发现因为beam在ebin目录下,正确的启动erl进程的命令应该是 erl -pa ebin。
在这里插入图片描述

Erlang 启动参数

-extra:额外参数,在启动后可以通过 init:get_plain_arguments() 函数获取。
-pa :指定 Erlang 加载用户编写的代码的路径。 是一个或多个目录,用空格分隔。
-s :指定一个 Erlang 模块,该模块包含了在启动时需要自动加载和执行的函数。
-name:设置节点名
-setcookie:设置Erlang节点的cookie值。这个参数后面跟的是cookie字符串,用于在集群中验证节点之间的通信。
-heart:启动心跳监控器,用于检测节点是否存活。
-hidden:设置节点为隐藏模式,该节点会连接到集群的所有节点,但在其他节点上执行 node() 命令时不会列出它。
-hosts:指定Erlang运行的服务器IP地址列表。
+P:设置最大进程数,范围为1024到134217727,默认为262144。
+K:启用或禁用kernel的poll机制,默认为false。
+S:设置同步线程池的线程数,范围为0到1024,默认为10。
+A:设置异步线程池的线程数,范围为0到1024,默认为10。
-smp:设置是否启用多核支持,可选值为enable或auto。
-kernel inet_dist_listen_min:节点可侦听端口的最小值
-kernel inet_dist_listen_max:节点可侦听端口的最大值.

werl -kernel inet_dist_listen_min ${ERL_PORT_MIN} -kernel inet_dist_listen_max ${ERL_PORT_MAX} +P 409600 +K true +MEas aobf +MElmbcs 512 -smp enable -hidden -pa ${CODE_PATH}/server/ebin -name ${cfg[‘nodename’]} -s main start ${start_flag} -extra ${cfg[‘node_type’]}

疑惑

在这里插入图片描述
在这里插入图片描述
modules:应用引入的所有模块,在生成启动脚本和 tar 文件的时候 systools 会用到此列表。默认为 [] 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值