2009-12-22 3 views
3
([email protected])8> spawn([email protected], tut, test, [hello, 5]). 

foo.hyd.com에 대한 파일 시스템 액세스 권한이없는 bar.del.com에 프로세스를 생성하고 실행하고 싶습니다. 모듈 "tut"의 서브 루틴 "test".공용 파일 시스템이없는 원격 프로세스 생성하기

[email protected]에 컴파일 된 "tut"모듈 파일을 제공하지 않고 그렇게 할 수있는 방법이 있습니까?

+2

12 질문, 아무도 받아 들일 수 없습니다 ... – jldupont

답변

3

당신은 원격 노드에서 모듈을로드하기 위해 다음과 같은 기능을 사용할 수 있습니다 in code:load_binary/3Filename 인수는 모듈에 대한 경로를 추적하는 데에만 사용되며 노드가 가리키는 파일은 로컬 node_server에서 사용되지 않습니다.

0

당신은 원격 노드에 로컬 코드를 보낼 수 있습니다 언급 한 바와 같이

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

: 파일 자체를 제공하지 않고

> {Mod, Bin, File} = code:get_object_code(Module). 
> rpc:call(RemoteNode, code, load_binary, [Mod, File, Bin]). 
3

* .beams를 파일 시스템에서 원격 파일 시스템으로 복사하지 않으려는 것으로 귀하의 질문을 해석합니다.

일을 테스트하는 경우 erl 쉘에서 nl(Mod) 호출을 사용하여 (현재) 알려진 모든 노드에 모듈을로드 할 수 있습니다. 즉, nodes()에 나타나는 것입니다.

코드를 보내고 메모리 복사본에서로드하면 원격 파일 시스템에 저장되지 않습니다.

slave 모듈을 사용하여 원격 노드를 시작할 수도 있습니다. 슬레이브는 마스터의 파일 시스템과 코드 서버에 액세스합니다. 일반 자동 로딩은 사용자가 test:tut/2 함수를 호출 할 때 모듈이 슬레이브에 있는지 확인합니다.

+0

이봐,이 정보가 도움이되었다, 나는 몰랐다. 고맙습니다! – Unoti

관련 문제