Как запустить приложение Erlang OTP и допустить передачу аргументов командной строки корнеумурующему приложению?

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

  •  27-10-2019
  •  | 
  •  

Вопрос

Quick 1 Liner: Как запустить приложение OTP и передать его командную строку?

Я хотел, чтобы я мог запустить приложение OTP в общем «Unix», имея возможность передавать аргументы командной строки, проанализированные Getopts. Итак, у меня есть Erlang Escript, который использует getopt Библиотека для обработки анализа аргументов командной строки.

Ответ Шино привел меня на правильный путь:

  1. У меня есть мой Escript Do the Getopts
  2. Затем Escript загружает описание приложения в память с помощью приложения: загрузка/1
  3. Затем я использую приложение: set_env/3 для хранения CLI Args
  4. Теперь запустите приложение с приложением: Start/2
  5. После запуска приложения аргументы можно получить через приложение: get_env/2
Это было полезно?

Решение

Вы также можете переопределить настройки среды приложения в командной строке:

erl -myapp foo bar ...

Это установит Application.get_env (myapp, foo) на «bar», переопределяет любое настройка App.config.

Другие советы

Вы можете использовать init:get_plain_arguments/0 Функция для доступа к аргументам командной строки (дополнительная).

Пример:

$ 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 Возвращает аргументы после -extra опция в виде списка строк. Вариант sname просто для объяснения, которое делает нет появляться в init:get_plain_argumets/0.

Для получения более подробной информации см. Документ о init модуль http://www.erlang.org/doc/man/init.html .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top