現在、Erlang アプリケーションは escript (TCP サーバー) 内で開始され、提供されたデフォルトのポートを使用するため、すべて正常に動作します。今、escriptを介してポートをアプリケーションに渡したいのですが、方法がわかりません。(アプリはスーパーバイザーを実行します)
script.escript
!/usr/bin/env escript
%% -*- erlang -*-
-export([main/1]).
main([UDPort, TCPort]) ->
U = list_to_integer(UDPort),
T = list_to_integer(TCPort),
app:start(), %% Want to pass T into the startup.
receive
_ -> ok
end;
...
app.erl
-module(app).
-behaviour(application).
-export([start/0, start/2, stop/0, stop/1]).
-define(PORT, 4300).
start () -> application:start(?MODULE). %% This is called by the escript.
stop () -> application:stop(?MODULE).
start (_StartType, _StartArgs) -> supervisor:start(?PORT).
stop (_State) -> ok.
アプリケーションを使用してこれが可能かどうかは正直わかりませんが、尋ねるのが最善だと思いました.