首页 > 代码库 > erlang 应用获取系统参数

erlang 应用获取系统参数

很多时候,我们的程序需要一些预定义的参数,比如上次说的tcp_server的例子

 

一般参数有集中途径,具体参考这里http://blog.yufeng.info/archives/2852

 

app里面,env字段,比如,我们的tcp_server_app.src

{application, tcp_server, [  {description, ""},  {vsn, "0.1"},  {registered, []},  {applications, [                  kernel,                  stdlib                 ]},  {mod, { tcp_server_app, []}},  {env, [      {listen_port,7000}  ]} ]}.

这种直接编译以后运行,不需要rebar generate

 

还有一种,放基于rebar项目的rel/files/sys.config里面,例如

[ {sasl, [         {sasl_error_logger, {file, "log/sasl-error.log"}},         {errlog_type, error},         {error_logger_mf_dir, "log/sasl"},      % Log directory         {error_logger_mf_maxbytes, 10485760},   % 10 MB max file size         {error_logger_mf_maxfiles, 5}           % 5 files max        ]},  {tcp_server,[     {listen_port,7000}    ]}].

tcp_server是实现了application的behavior的模块名字

 

应用里面的代码大概就是这样

-define(DEF_PORT,  2222).get_app_env(Opt, Default) ->    case application:get_env(Opt) of        {ok, Val} -> Val;        _ ->            case init:get_argument(Opt) of                [[Val | _]] -> Val;                error       -> Default            end    end.ListenPort = get_app_env(listen_port, ?DEF_PORT).

 

erlang 应用获取系统参数