无法在Erlang中的另一个节点上生成进程

时间:2013-12-29 17:08:52

标签: erlang spawn

当我尝试使用

在单独的节点上创建新进程时
Pid = spawn(mynode, mymodule, myfunction, [self()])

(导出myfunction/1),我收到此错误:

Error in process <0.10.0> on node 'no@de1' with exit value:
{undef,[{mymodule, myfunction, [<33.64.0>], []}]}

我尝试设置-compile(export_all)标志,但假设错误日志中有额外的大括号,则情况并非如此。 我不知道导致错误的原因,我不知道该怎么做。

3 个答案:

答案 0 :(得分:3)

你得到的错误是“没有模块'mymodule'和/或没有函数'mymodule:myfunction / 1'”。
这意味着mymodule未加载到单独节点的代码服务器中 要加载mymodule的代码,您需要this snippetthis function

之类的内容

答案 1 :(得分:2)

您是否检查过模块mymodule是否在路径no @ de1?

当您使用spawn(mynode,mymodule,myfunction,[self()])进行进程时,VM需要在执行之前加载代码。

如果你以这种方式spawn(Node, Fun)使用高阶函数(一个有趣的),那么在路径中使用代码并不是更必要(但要注意函数定义中对函数的任何调用都需要要在远程节点上解决)

答案 2 :(得分:0)

转到no @ de1并运行m(mymodule).它应该说明模块是否可加载以及哪些函数确实导出。

还:检查其他节点是否可访问。在它上面做net_adm:ping