要启动我的程序,我执行下一个序列:
$ erl
> c(module1).
> c(module2).
> c(modulen).
modulen:start().
是否有可能创建允许我启动程序的脚本?
最佳答案
您可以使用加载器脚本以 OTP 方式启动您的应用程序:
-module(XYZ_app).
-export([start/0]).
start() ->
application:start(inets),
application:start(XYZ).
您通过 shell 脚本启动该脚本。小心使用
escript
如果您计划构建在操作系统启动时运行的守护程序,因为它们很棘手。#!/bin/bash
erl -boot start_sasl -s XYZ_app start
当然你需要你的
XYZ.app
文件(只是一个例子):{application, tinycouch,
[{description, "tinycouch"},
{vsn, "0.1"},
{modules, [
tinycouch, tinycouch_app, tinycouch_sup,
tinycouch_server, tinycouch_logger_h, tinycouch_utils,
tinycouch_db, mod_tinycouch
]},
{registered, [tinycouch
,tinycouch_server
,tinycouch_sup
]},
{applications, [kernel, stdlib, sasl, inets]},
{env, []},
%% Application Start point
{mod, {tinycouch_sup, []}}]}.
...以及您所有的
.erl
文件必须已编译。备注 如果您打算分发您的应用程序(例如 Debian 存储库等),您可能应该考虑使用
make
文件来编译和安装你的应用程序。最后一点:您也可以使用
boot
文件(最终的 OTP 方式),但我发现那些非常受限制:引导文件将您的应用程序绑定(bind)到 具体 Erlang(和其他相关应用程序)的版本发布。您的应用程序可能能够在各种 Erlang 版本中运行,但您需要为您打算发布的每个“平台版本”有一个单独的构建/发布过程。
关于erlang - 启动脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865997/