使用多个进程发送和接收Erlang消息

使用多个进程发送和接收Erlang消息,erlang,Erlang,我在二郎的一个学校项目中工作。我试图在这里创建一个主进程,它将生成5个进程,然后这些进程将调用列表中的人。文本文件如下: {约翰、[吉尔、乔、鲍勃]}。{吉尔,[鲍勃,乔,鲍勃]}。{苏,[吉尔,吉尔,吉尔,鲍勃,吉尔]}。{鲍勃,[约翰]}。{乔,[苏]} 但我无法创建新流程,因为我收到了这个错误。请帮我解决这个问题,我不理解这个错误 invoke(Elem) -> {X,Y} = Elem, Pid = spawn(calling, people, [X,Y]), reg

我在二郎的一个学校项目中工作。我试图在这里创建一个主进程,它将生成5个进程,然后这些进程将调用列表中的人。文本文件如下:

{约翰、[吉尔、乔、鲍勃]}。{吉尔,[鲍勃,乔,鲍勃]}。{苏,[吉尔,吉尔,吉尔,鲍勃,吉尔]}。{鲍勃,[约翰]}。{乔,[苏]}

但我无法创建新流程,因为我收到了这个错误。请帮我解决这个问题,我不理解这个错误

invoke(Elem)  ->
  {X,Y} = Elem,
  Pid = spawn(calling, people, [X,Y]),
  register(X,Pid).
第二模块 我得到的错误是:

 =ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.59.0> with exit value:
{undef,[{calling,people,[john,[jill,joe,bob]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.60.0> with exit value:
{undef,[{calling,people,[jill,[bob,joe,bob]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.61.0> with exit value:
{undef,[{calling,people,[sue,[jill,jill,jill,bob,jill]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.62.0> with exit value:
{undef,[{calling,people,[bob,[john]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.63.0> with exit value:
{undef,[{calling,people,[joe,[sue]],[]}]}

错误消息表示在模块调用中不存在具有2个参数的函数people。这有几种可能:

模块调用不存在 模块调用不可访问,不在路径中 模块调用未编译 函数people/2未在模块调用中导出 编辑

您可以使用命令rpcode:get\u path检查路径代码和Erlang机器将在其中搜索模块的位置列表。。如果你没有做什么特别的事情,你会得到一个包含。作为第一个元素,然后是所有erlang库。点表示工作目录

使用命令pwd.,您可以获得此工作目录的位置

然后,您应该查找名为calling.beam的文件。如果不存在,则必须编译该模块,例如使用命令ccaling。在壳里

如果它存在,但位于工作目录之外的另一个位置,您必须在以下解决方案中进行选择我不知道哪一个更适合您:

每次启动Erlang VM时,必须使用以下命令代码添加beam文件所在的目录:add_pathPath/to/your/beam/file 检查所需的所有beam文件是否位于同一目录中,并从中启动VM。最终将工作目录更改为正确的位置:cwdbeam/file/directory。。 在Erlang中,虽然不是强制性的,但人们使用相同的方式来组织他们的文件,它看起来像:

应用 文档->用于所有文档文件 src->用于所有源文件module.erl、application.app.src 包含->所有头文件module.hrl ebin->用于所有编译文件module.beam、application.app ...
这就足够开始并制作一些简单的程序了。对于真正的应用程序,人们使用诸如管理和组织文件以及构建过程之类的工具。

Hi,调用exists并导出people/2。如何检查调用是否无法访问或未编译?
 =ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.59.0> with exit value:
{undef,[{calling,people,[john,[jill,joe,bob]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.60.0> with exit value:
{undef,[{calling,people,[jill,[bob,joe,bob]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.61.0> with exit value:
{undef,[{calling,people,[sue,[jill,jill,jill,bob,jill]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.62.0> with exit value:
{undef,[{calling,people,[bob,[john]],[]}]}

=ERROR REPORT==== 18-Jun-2020::20:27:49 ===
Error in process <0.63.0> with exit value:
{undef,[{calling,people,[joe,[sue]],[]}]}