zoukankan      html  css  js  c++  java
  • 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).
  • 相关阅读:
    开启sentry权限控制hue
    hive_server2的权限控制
    自带的simple认证
    tableau备份
    tableau分布式添加节点
    升级tableau版本
    tableau日常管理
    mavn Nexus Repository Manager漏洞
    第3章:打造命令行工具
    基于从库+binlog方式恢复数据
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/4078483.html
Copyright © 2011-2022 走看看