Как запустить приложение Erlang OTP и разрешить передачу аргументов командной строки корневому супервизору приложения?
Быстрый 1 вкладыш: как запустить приложение OTP и передать ему аргументы командной строки?
Я хотел, чтобы у меня была возможность запускать приложение OTP обычным способом "UNIX", с возможностью передавать аргументы командной строки, проанализированные getopts. Итак, у меня есть erlang escript, который использует библиотеку getopt для обработки парсинга аргументов командной строки.
Ответ Шино направил меня на правильный путь:
- У меня есть мой скрипт сделать анализ getopts
- Затем скрипт загружает описание приложения в память вместе с приложением:load/1
- Затем я использую application:set_env/3 для хранения аргументов CLI.
- Теперь запустите приложение с приложением:start/2
- После запуска приложения доступ к аргументам можно получить через приложение:get_env/2
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.