문제

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

Bar.del.com에서 프로세스를 스폰하고 싶습니다. 파일 시스템에 액세스 할 수없는 Foo.hyd.com (프로세스를 산란하는 곳)에 "tut"의 "테스트"를 실행합니다.

nodea@bar.del.com에 컴파일 된 "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에서 사용하지 않습니다.

다른 팁

나는 당신의 질문을 파일 시스템에서 원격 파일 시스템으로 복사하지 않으려는 욕구로 해석하고 있습니다.

당신이 단지 테스트를하는 경우 nl(Mod) ERL 쉘에 전화하여 알려진 모든 (현재) 노드에 모듈을로드하십시오. 즉, 나타나는 것입니다 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