来自配置或应用程序的值:set_env在哪里?我如何获得它们?

时间:2017-07-11 20:51:40

标签: erlang

我正在使用Erlang MQTT代理,该代理使用墨鱼为应用程序生成.config文件。配置文件中的值最终会在应用程序中使用,例如,在某一点上,Opts变量将包含配置文件中的值,如{ssl_opts,{more,values,here}} ...}

这些值存储在哪里?我怎么能从函数内部访问它们?我对整个过程感到困惑,帮助或链接将极大地帮助我理解!

1 个答案:

答案 0 :(得分:2)

来自应用程序aplication的模块kernel负责。可以使用application:get_env/1,2,3函数和application:get_all_env/0,1访问这些值 以及application:get_key/1,2application:get_all_key/0,1。它存储在名为public etsac_tab[set, public, named_table, {read_concurrency,true}])中。确切地说,内部模块application_controller负责它。

合并各种配置(.app.config文件)的值(主要是env密钥)并加载到application:load/1,2中的ac_tab表中是appliaction:start/1,2的先决条件。请参阅7 ApplicationsOTP Design Principles User's Guide章节中的详细信息。

您的问题也在How to use application:get_env() in Erlang/OTP?中得到了部分回答。