2012-02-18 8 views
3

クイック1ライナー:どのようにOTPアプリケーションを起動し、コマンドライン引数を渡すのですか?Erlang OTPアプリケーションを起動し、アプリケーションのルートスーパーバイザにコマンドライン引数を渡す方法を教えてください。

一般的な "UNIX"の方法でOTPアプリケーションを起動し、getoptsで解析されたコマンドライン引数を渡すことができるようにしたかったのです。だから、私はコマンドライン引数の解析を処理するためにgetoptライブラリを使用するerlangエスケープを持っています。

SHINOの答えは正しい道に私を得た:

  1. 私は私のescriptを持ってgetoptsが
  2. escriptを解析ん、アプリケーションでメモリにアプリケーションの説明をロード:ロード/ 1
  3. 私はその後、アプリケーション:set_env/3を使用してCLI引数を保存する
  4. ここで、アプリケーションでアプリケーションを起動します。start/2
  5. アプリケーションが起動すると、引数はアプリケーションからアクセスできますn:get_env/2

答えて

2

また、コマンドライン上のアプリケーションの環境設定を上書きすることができます

erl -myapp foo bar ... 

これは、任意のapp.configを設定を上書きし、「バー」にapplication.get_env(myappに、FOO)を設定します。

+0

これは良いヒントのように見えます。上記の編集を参照してください。 –

2

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) 
([email protected])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のドキュメントを参照してください。

関連する問題