查看源码 start_erl

在 Windows 系统上为嵌入式系统启动 Erlang。

描述

start_erl 程序是 Windows NT/2000/XP(以及更高版本的 Windows)特有的。尽管在其他平台上存在同名的程序,但它们的功能是不同的。

此程序以编译形式(位于 <Erlang 根目录>\erts-<版本>\bin 下)和源代码形式(位于 <Erlang 根目录>\erts-<版本>\src 下)分发。源代码的目的是为了方便根据本地需求自定义程序,例如循环重启检测。还有一个为 Microsoft Visual C++ 发布的 nmake 程序编写的 “make” 文件。但是,此程序可以使用任何 Win32 C 编译器进行编译(可能需要进行少量修改)。

此程序有助于 Windows 系统上的发布处理。该程序由 erlsrv 程序调用,读取发布数据文件 start_erl.data,然后启动 Erlang。在模拟器重启期间,发布处理器会添加和删除 start_erl 的一些选项(更具体地说,是 -data 选项)。

start_erl [<erl options>] ++ [<start_erl options>]

start_erl 程序在其原始形式中识别以下选项:

  • ++ - 必须的。分隔 start_erl 选项和正常的 Erlang 选项。命令行中 ++ 之前 的所有内容都将被解释为发送给 erl 程序的选项。 ++ 之后 的所有内容都将被解释为 start_erl 本身的选项。

  • -reldir <发布根目录> - 如果未指定环境变量 RELDIR 且未指定 -rootdir 选项,则为必须的。告知 start_erl 发布树的根目录在文件系统中的位置(通常是 <Erlang 根目录>\releases)。预计 start_erl.data 文件位于此目录中(除非另有指定)。如果仅指定了 -rootdir 选项,则假定该目录为 <Erlang 根目录>\releases

  • -rootdir <Erlang 根目录> - 如果未指定 -reldir 且环境中不存在 RELDIR,则为必须的。这指定了 Erlang 安装根目录(libreleaseserts-<版本> 目录位于该目录下)。如果仅指定了 -reldir(或环境变量 RELDIR),则假定 Erlang 根目录是发布目录正上方一级目录。

  • -data <数据文件名> - 可选的。指定 <发布根目录> 中除 start_erl.data 以外的其他数据文件。它是相对于 <发布根目录> 指定的,也可以是绝对路径(包括驱动器盘符等)。此选项由发布处理器在升级期间使用,并且在正常操作期间不应使用。通常,发布数据文件不应使用不同的名称。

  • -bootflags <启动标志文件名> - 可选的。指定相对于发布目录的文件名(即,<发布根目录> 的子目录,其中 .boot 文件和其他文件位于该子目录中)。此文件的内容会追加到启动 Erlang 时的命令行中。这使得可以轻松地使用不同的选项启动不同版本的模拟器。

注意

  • 由于源代码是分发的,因此可以轻松修改以接受其他选项。该程序仍然必须接受选项 -data,其语义如上所述,以便发布处理器能够正常工作。
  • 通过检查发布数据文件中指定的模拟器版本的注册表项来找到 Erlang 模拟器。必须在升级之前正确安装新模拟器,才能使此方法正常工作。
  • 尽管该程序与特定于模拟器版本的文件位于一起,但预计它不是特定于模拟器版本的。发布处理器在模拟器重启期间不会erlsrv-machine 选项更改为 start_erl。定位(可能已自定义的)start_erl 程序,使其在升级期间不会被覆盖。
  • erlsrv 程序的默认选项不足以进行发布处理。由 erlsrv 启动的机器应指定为 start_erl 程序,并且参数应包含 ++,后跟所需的选项。

另请参阅

erlsrv, release_handler