Come si avvia un'applicazione Erlang OTP e consente il passaggio degli argomenti di comando al supervisore principale dell'applicazione?

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

  •  27-10-2019
  •  | 
  •  

Domanda

Liner Quick 1: come si avvia un'applicazione OTP e passano la riga di comando?

Volevo essere in grado di avviare un'applicazione OTP in un modo generico "UNIX", essendo in grado di superare gli argomenti della linea di comando analizzati da GetOpts. Quindi, ho un Erlang Escript che utilizza il getopt Libreria per gestire l'analisi degli argomenti della riga di comando.

La risposta di Shino mi ha portato sulla strada giusta:

  1. Ho il mio escript fare l'analisi dei getopts
  2. Escripta quindi carica la descrizione dell'applicazione in memoria con l'applicazione: caricamento/1
  3. Quindi uso l'applicazione: set_env/3 per archiviare la CLI Args
  4. Ora avvia l'applicazione con l'applicazione: Start/2
  5. Una volta avviata l'applicazione, è possibile accedere agli argomenti tramite l'applicazione: get_env/2
È stato utile?

Soluzione

È inoltre possibile sovrascrivere le impostazioni dell'ambiente dell'applicazione sulla riga di comando:

erl -myapp foo bar ...

Questo imposterà applicazione.get_env (myapp, foo) su "bar", sovrascrivendo qualsiasi impostazione di app.config.

Altri suggerimenti

Puoi usare init:get_plain_arguments/0 funzione per accedere agli argomenti della riga di comando (extra).

Esempio:

$ 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 Restituisce argomenti dopo -extra Opzione come elenco di stringhe. Opzione sname è solo per spiegazione, cosa che fa non apparire in init:get_plain_argumets/0.

Per maggiori dettagli, consultare il documento su init modulo http://www.erlang.org/doc/man/init.html .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top