Wie startet man eine Erlang-OTP-Anwendung und erlaubt das Übergeben von Befehlszeilenargumenten an den Root Supervisor der Anwendung?

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

  •  27-10-2019
  •  | 
  •  

Frage

Quick 1 Liner: Wie startet man eine OTP-Anwendung und übergibt die Befehlszeile für sie?

Ich wollte in der Lage sein, eine OTP-Anwendung auf eine generische "Unix" -Sthee zu starten und die von GetOpts analysierten Befehlszeilenargumente zu übergeben. Ich habe also ein Erlang -E -E -E -E -E -E -edel, das das verwendet Getopt Bibliothek für die Parsen von Befehlszeilenargumenten.

Shinos Antwort brachte mich auf den richtigen Weg:

  1. Ich habe mein E -eSkript durch die Getopts analysiert
  2. Das E -eSkript lädt dann die Anwendungsbeschreibung mit Anwendung in den Speicher: last/1
  3. Ich verwende dann die Anwendung: set_env/3, um die CLI -Args zu speichern
  4. Starten Sie nun die Anwendung mit Anwendung: Start/2
  5. Sobald die Anwendung gestartet wird, können auf die Argumente über Anwendung zugegriffen werden: get_env/2
War es hilfreich?

Lösung

Sie können die Einstellungen für die Anwendungsumgebung auch in der Befehlszeile überschreiben:

erl -myapp foo bar ...

Dadurch wird application.get_env (myapp, foo) auf "bar" festgelegt und jede App.config -Einstellung überschreiben.

Andere Tipps

Sie können verwenden init:get_plain_arguments/0 Funktion, um die Befehlszeile (zusätzliche) Argumente zuzugreifen.

Beispiel:

$ 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 Gibt Argumente nach -extra Option als Liste von Zeichenfolgen. Möglichkeit sname ist nur zur Erklärung, was tut nicht erscheinen in init:get_plain_argumets/0.

Weitere Informationen finden Sie unter dem Dokument auf init Modul http://www.erlang.org/doc/man/init.html .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top