查看源代码 erl_prim_loader (erts v15.2)
底层 Erlang 加载器。此模块用于将所有 Erlang 模块加载到系统中。启动脚本也使用此底层加载器获取。
erl_prim_loader
知道环境以及如何获取模块。
命令行标志 -loader Loader
可用于选择 erl_prim_loader
使用的方法。Erlang 运行时系统支持两种 Loader
方法:efile
和 inet
。
命令行标志
erl_prim_loader
模块解释以下命令行标志
-loader Loader
- 指定erl_prim_loader
使用的加载器的名称。Loader
可以是efile
(使用本地文件系统)或inet
(使用另一个 Erlang 节点上的boot_server
加载)。如果省略标志
-loader
,则默认为efile
。-loader_debug
- 使efile
加载器在处理文件时写入一些调试信息,例如失败的原因。-hosts Hosts
- 指定inet
加载器可以使用的其他 Erlang 节点。如果存在标志-loader inet
,则此标志是强制性的。在每个主机上,必须有一个 Erlang 节点具有erl_boot_server
,它处理加载请求。Hosts
是 IP 地址列表(主机名不可接受)。-setcookie Cookie
- 指定 Erlang 运行时系统的 cookie。如果存在标志-loader inet
,则此标志是强制性的。
另请参阅
概要
函数
不建议使用此函数,请使用 read_file/1
。
不建议使用此函数,请使用 code:get_path/0
。
列出目录中的所有文件。
使用底层加载器读取文件。
检索有关文件的信息。
与 read_file_info/1
的工作方式相同,只是如果 Filename
是符号链接,则有关该链接的信息将返回到 file_info
记录中,并且记录的 type
字段设置为 symlink
。
如果 init
在启动脚本中解释 path
命令,则设置加载器的路径。
函数
-spec get_file(Filename) -> {ok, Bin, FullName} | error when Filename :: atom() | string(), Bin :: binary(), FullName :: string().
不建议使用此函数,请使用 read_file/1
。
使用底层加载器获取文件。Filename
是绝对文件名或仅是文件名,例如 "lists.beam"
。如果为加载器设置了内部路径,则使用此路径查找文件。FullName
是获取的文件的完整名称。Bin
是文件的内容,为二进制格式。
Filename
也可以是存档中的文件,例如 $OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia.beam
。有关存档文件的信息,请参阅 code
。
-spec get_path() -> {ok, Path} when Path :: [Dir :: string()].
不建议使用此函数,请使用 code:get_path/0
。
获取在加载器中设置的路径。路径由 init
进程根据启动脚本中找到的信息设置。
-spec list_dir(Dir) -> {ok, Filenames} | error when Dir :: string(), Filenames :: [Filename :: string()].
列出目录中的所有文件。
如果成功,则返回 {ok, Filenames}
,否则返回 error
。Filenames
是目录中所有文件的名称列表。名称未排序。
Dir
也可以是存档中的目录,例如 $OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin
。有关存档文件的信息,请参阅 code
。
使用底层加载器读取文件。
如果成功,则返回 {ok, Bin}
,否则返回 error
。Bin
是文件的内容,为二进制格式。
Filename
也可以是存档中的文件,例如 $OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia.beam
。有关存档文件的信息,请参阅 code
。
-spec read_file_info(Filename) -> {ok, FileInfo} | error when Filename :: string(), FileInfo :: file:file_info().
检索有关文件的信息。
如果成功,则返回 {ok, FileInfo}
,否则返回 error
。FileInfo
是一个记录 file_info
,在 Kernel 包含文件 file.hrl
中定义。在调用该函数的模块中包含以下指令
-include_lib("kernel/include/file.hrl").
有关该记录的更多信息,请参阅 file:read_file_info/2
。
Filename
也可以是存档中的文件,例如 $OTPROOT/lib/mnesia-4.4.7.ez/mnesia-4.4.7/ebin/mnesia
。有关存档文件的信息,请参阅 code
。
-spec read_link_info(Filename) -> {ok, FileInfo} | error when Filename :: string(), FileInfo :: file:file_info().
与 read_file_info/1
的工作方式相同,只是如果 Filename
是符号链接,则有关该链接的信息将返回到 file_info
记录中,并且记录的 type
字段设置为 symlink
。
如果 Filename
不是符号链接,则此函数返回的结果与 read_file_info/1
完全相同。在不支持符号链接的平台上,此函数始终等效于 read_file_info/1
。
-spec set_path(Path) -> ok when Path :: [Dir :: string()].
如果 init
在启动脚本中解释 path
命令,则设置加载器的路径。