Comment peut-on démarrer une application Erlang OTP et permettre le passage d'arguments de ligne de commande au superviseur de la racine de l'application?

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

  •  27-10-2019
  •  | 
  •  

Question

1 rapide doublure: Comment peut-on lancer une application OTP et passer args de ligne de commande à elle

Je voulais être en mesure de démarrer une application OTP d'une manière « UNIX » générique, pouvoir transmettre des arguments de ligne de commande analysés par getopts. Donc, j'ai un Erlang Escript qui utilise la bibliothèque getopt pour gérer l'analyse syntaxique des arguments de ligne de commande.

La réponse de Shino m'a sur le droit chemin:

  1. J'ai mon Escript faire l'analyse syntaxique getopts
  2. Le Escript charge ensuite la description de l'application dans la mémoire de la demande: charge / 1
  3. J'utilise ensuite l'application: set_env / 3 pour stocker les args CLI
  4. Maintenant, lancez l'application avec l'application: start / 2
  5. Une fois l'application lancée, les arguments sont accessibles via l'application: get_env / 2
Était-ce utile?

La solution

Vous pouvez également remplacer les paramètres d'environnement d'application sur la ligne de commande:

erl -myapp foo bar ...

Cela va régler application.get_env (myapp, foo) à "bar", remplaçant tous les paramètres app.config.

Autres conseils

Vous pouvez utiliser la fonction init:get_plain_arguments/0 pour commande d'accès en ligne (en sus) arguments.

Exemple:

$ 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"]

retourne init:get_plain_argumets/0 arguments après option -extra comme une liste de chaînes. Option sname est juste pour explication, qui fait pas apparaissent dans init:get_plain_argumets/0.

Pour plus de détails, voir le document sur le module init http://www.erlang.org /doc/man/init.html .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top