- アーラン/ OTPアプリケーションディレクトリのレイアウト:
- ドキュメントは、
ドキュメントを格納するために使用されます。文書がEDOC生成意志のoverview.edoc文書がここにある場合は、ファイルの残りの部分は自動的に生成されます。 - ebin
コンパイルされたコードを格納します。アプリケーションのメタデータを含むの.appファイルはここに格納されなければなりません。 - 含ま
公共のヘッダファイルを格納するために使用されます。 - PRIVは、
必要なアプリケーションと一緒に発表され、他のさまざまなコンテンツを格納するために使用されます。含むがこれにテンプレートファイル、共有オブジェクトファイル、DLLに限定されるものではありません。
コード:priv_dir(<アプリケーション名 >) PRIVへの完全なディレクトリパスを返します。 - SRC
- ドキュメントは、
- 建物用途:
tcp_rpc.app{application, tcp_rpc, [ {description, "RPC server for Erlang and OTP in action"}, {vsn, "0.1.0"}, {modules, [ tr_app, tr_sup, tr_server]}, {registered, [tr_sup]}, {applications, [kernel, stdlib]}, {mod, {tr_app, []}} ] }.
tr_app.erl
-module(tr_app). -behaviour(application). %% API -export([ start/2, stop/1]). start(_Type, _StartArgs) -> case tr_sup:start_link() of {ok, Pid} -> {ok, Pid}; Other -> {error, Other} end. %% Type: normal | failover | takeover %% StartArgs: .app 文件中传给 mod 的参数 stop(_State) -> ok.
tr_sup.erl
-module(tr_sup). -behaviour(supervisor). %% API -export([start_link/0]). -export([init/1]). -define(SERVER, ?MODULE). start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []). init([]) -> Server = {tr_server, {tr_server, start_link, []}, permanent, 2000, worker, [tr_server]}, Children = [Server], RestartStrategy = {one_for_one, 0, 1}, {ok, {RestartStrategy, Children}}. %% 重启策略:{xx, Max, Within} 单位:秒 %% one_for_one:如果一个子进程终止,仅该进程被重启 %% one_for_all:如果一个子进程终止,所有子进程被重启 %% rest_for_one:如果一个子进程终止,在启动顺序上后面的子进程被重启 %% simple_one_for_one:监督者只能启动一种子进程,但却可以启动任意多个。 %% 所有子进程都是运行时动态添加的,监督者本身在启动时不会启动任何子进程。 %% 子进程规范:{ID, Start, Restart, Shutdown, Type, Modules} %% Restart:permanent | temporary | transient(仅在进程意外终止时重启进程) %% Shutdown: %% 软关闭策略,单位:毫秒 %% brutal_kill %% infinity:主要用于子进程本身也同为监督者的情况,表示应给予子进程充分的时间自行退出 %% 添加子进程 %% supervisor:start_child(Sup, ChildSpec) %% 如果督程死了,并被重建了,所有动态添加的子进程会丢失 %% 停止子进程 %% supervisor:terminate_child(Sup, Id). %% 删除子进程 %% supervisor:delete_child(Sup, Id).
-
アプリケーションを起動します。
erlc -o ebin src/*.erl erl -pa ebin werl -pa ebin(windows) application:start(tcp_rpc).
-
EDOC生成されたドキュメント:
edoc:application(tcp_rpc, ".", []).
「アーラン/ OTP並行プログラミング戦闘」第IV章OTPアプリケーションと監督メカニズム
おすすめ
転載: blog.csdn.net/sanmao123456_/article/details/103420173
ランキング