([email protected])8> spawn([email protected], tut, test, [hello, 5]).
我想在bar.del.com上產生一個沒有文件系統訪問foo.hyd.com的進程(從我產生進程的地方),運行模塊「tut」的子程序「測試」。沒有共享文件系統的Spawn遠程進程
有沒有辦法做到這一點,沒有提供[email protected]與編譯的「tut」模塊文件?
([email protected])8> spawn([email protected], tut, test, [hello, 5]).
我想在bar.del.com上產生一個沒有文件系統訪問foo.hyd.com的進程(從我產生進程的地方),運行模塊「tut」的子程序「測試」。沒有共享文件系統的Spawn遠程進程
有沒有辦法做到這一點,沒有提供[email protected]與編譯的「tut」模塊文件?
您可以使用下面的函數來加載遠程節點模塊,而不提供文件本身:
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使用。
您可以將本地代碼發送到遠程節點:
> {Mod, Bin, File} = code:get_object_code(Module).
> rpc:call(RemoteNode, code, load_binary, [Mod, File, Bin]).
我將你的問題解釋爲希望不將* .beams從文件系統複製到遠程文件系統。
如果您只是測試東西,您可以使用erl shell中的nl(Mod)
調用在所有(當前)已知的節點上加載模塊。也就是那些在nodes()
中出現的那些。
這將發送代碼並從內存拷貝中加載它,它不會將它存儲在遠程文件系統中。
您還可以使用slave
模塊啓動遠程節點。從機訪問其主機的文件系統和代碼服務器。當您撥打test:tut/2
功能時,普通自動加載將確保模塊存在於從站中。
嘿這是有用的信息,我不知道。謝謝! – Unoti 2011-01-09 13:31:52
12個問題,沒有接受... – jldupont 2009-12-22 14:32:31