¿Cómo se inicia una aplicación Erlang OTP y permite la aprobación de argumentos de línea de comandos al supervisor raíz de la aplicación?
-
27-10-2019 - |
Pregunta
Quick 1 Liner: ¿Cómo se inicia una aplicación OTP y se pasa con la línea de comandos?
Quería poder iniciar una aplicación OTP de una manera genérica "unix", poder aprobar argumentos de línea de comandos analizados por GetOpts. Entonces, tengo un Erlang Escript que usa el getopt Biblioteca para manejar el análisis de los argumentos de línea de comandos.
La respuesta de Shino me consiguió en el camino correcto:
- Tengo mi escript para hacer el análisis de getopts
- El escript luego carga la descripción de la aplicación en la memoria con la aplicación: carga/1
- Luego uso la aplicación: set_env/3 para almacenar los args CLI
- Ahora, inicie la aplicación con la aplicación: inicio/2
- Una vez que se inicia la aplicación, se puede acceder a los argumentos a través de la aplicación: get_env/2
Solución
También puede anular la configuración del entorno de aplicación en la línea de comando:
erl -myapp foo bar ...
Esto establecerá Application.Get_env (MyApp, Foo) a "Bar", anulando cualquier configuración de App.Config.
Otros consejos
Puedes usar init:get_plain_arguments/0
función para acceder a argumentos de línea de comandos (extra).
Ejemplo:
$ erl -sname example -extra extra args here
Erlang R15B (erts-5.9) [source] [64-bit] [smp:2:2] [async-threads:0] [kernel-poll:false]
Eshell V5.9 (abort with ^G)
(example@localhost)1> init:get_plain_arguments().
["extra","args","here"]
init:get_plain_argumets/0
Devuelve argumentos después -extra
opción como una lista de cadenas. Opción sname
es solo para explicación, que sí no aparecer en init:get_plain_argumets/0
.
Para obtener más detalle, consulte el documento en init
módulo http://www.erlang.org/doc/man/init.html .