¿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?

StackOverflow https://stackoverflow.com/questions/9339238

  •  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:

  1. Tengo mi escript para hacer el análisis de getopts
  2. El escript luego carga la descripción de la aplicación en la memoria con la aplicación: carga/1
  3. Luego uso la aplicación: set_env/3 para almacenar los args CLI
  4. Ahora, inicie la aplicación con la aplicación: inicio/2
  5. Una vez que se inicia la aplicación, se puede acceder a los argumentos a través de la aplicación: get_env/2
¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top