(nodeA@foo.hyd.com)8> spawn(nodeA@bar.del.com, tut, test, [hello, 5]).

欲产卵上bar.del.com一种方法,其具有foo.hyd.com没有文件系统访问(从我在哪里产卵的处理),在运行模块“啧”的子程序“测试”。

有没有办法做到这一点,W / O提供nodeA@bar.del.com与编撰的“啧啧”模块文件?

有帮助吗?

解决方案

可以使用下面的函数来加载在远程节点的模块,而不提供该文件本身:

load_module(Node, Module) ->
    {_Module, Bin, Filename} = code:get_object_code(Module), 
    rpc:call(Node, code, load_binary, [Module, Filename, Bin]).

如图code:load_binary/3 Filename参数指出只用来跟踪的路径模块和文件它指向不使用本地node_server。

其他提示

我解释你的问题,以不从你的文件系统复制* .beams到远程文件系统的愿望。

如果你只是测试的东西,你可以使用在ERL外壳nl(Mod)调用来加载模块上的所有(当前)已知节点。即,那些在nodes()显示出来。

这将在发送的代码和从所述存储器复制加载它,它不会将其存储在远程文件系统。

您也可以使用slave模块启动远程节点。一个从设备访问其主人的文件系统和代码服务器。那么普通的自动装载将确保在当你打电话给你test:tut/2函数从存在的模块。

可以本地代码发送到远程节点:

> {Mod, Bin, File} = code:get_object_code(Module).
> rpc:call(RemoteNode, code, load_binary, [Mod, File, Bin]).
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top