공통 파일 시스템과 함께 원격 프로세스를 생성하십시오
-
20-09-2019 - |
문제
(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]).
제휴하지 않습니다 StackOverflow