问题标签 [erlang-shell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
898 浏览

erlang - 如何将消息广播到 Erlang 中的进程列表?

我是 Erlang 的新手,我正在尝试了解如何将消息从一个进程发送到进程列表。

假设我们有一个包含 Pid 列表的数据结构。如何让 Pid 向 Pid 列表发送消息“M”,其中列表的每个元素都有 2 个元素:字符串(代表名称)和 Pid?我想出的是:

但是据我了解,我没有正确匹配 Pid 列表的模式,因此我可以从 Pid 列表的元素中“提取” Pid。

基本上,我有一个名为“looper”的函数,它不断等待新消息的到来。当它收到类型的消息时

其中“M”是我想向名为“Friends”的 Pid 列表广播的消息,R 只是一个整数。

R 基本上是一个整数,表示消息应该走多远。

在设置 Pid 并设置 Pid 之间的“友谊”后,我从终端得到的是:

任何帮助将不胜感激。谢谢

0 投票
2 回答
1891 浏览

erlang - 如何将消息广播到 Erlang 中的进程列表?控制台挂

我是 Erlang 的新手,我正在尝试了解如何将消息从一个进程发送到进程列表。

假设我们有一个数据结构,其中包含一个包含字符串和 Pid 元素的列表。如何让 Pid 向作为前面描述的两个元素之一的 Pid 发送消息“M”?我想出的是:

但据我了解,我没有正确匹配 Pid 列表的模式,因此我可以从 Pid 列表的元素中“提取” Pid,或者我没有正确使用列表发送消息到它。

基本上,我有一个名为“looper”的函数,它不断等待新消息的到来。当它收到类型的消息时

其中“M”是我想向名为“Friends”的 Pid 列表广播的消息,R 只是一个整数。

R 基本上是一个整数,表示消息应该走多远。

设置 Pid、设置 Pid 之间的“友谊”并广播消息后,我从终端得到的是:

当我查看广播消息的 Pid 的消息时,控制台只是挂起,其他 Pid 没有收到任何消息。

任何帮助将不胜感激。谢谢

0 投票
1 回答
164 浏览

erlang - 在 Erlang 中向进程广播消息时出错

我是 Erlang 的新手,我正在尝试让 Pid 向其他几个 Pid 发送消息。

我有一个函数,它接受一个 Pid、一个字符串(消息)和一个整数 R(半径)作为参数。

我有这个等待接收新消息的侦听器函数:

当我调用函数广播时,我收到以下消息:

第 56 行是以下行:

据我了解,我没有正确传递消息:/我做错了什么?

0 投票
1 回答
2808 浏览

file-io - 如何在erlang中打开具有相关路径的文件?

我一直在搞乱 erlang,我试图找到如何使用函数读取 .txt 文件,但我无法弄清楚如何从相关路径读取它。基本上这就是我构建项目目录的方式:

我所有的 .beam 文件都在 ebin 目录中,我需要打开“priv/”目录中的 .txt 文件。

这是我的代码:

当我调用这个函数时,我传递了一个字符串,比如:“/absolute/path/to/project/directory/priv”,但每次我都会收到这个错误。

如果我将 .txt 文件与我从中调用函数的 .beam 文件放在同一个文件夹中,那么如果我只输入文件名“foo.txt”,它就可以正常工作。

如何使函数从项目的相关路径中读取?

如果我不能这样做,那么如何读取与 .beam 文件位于同一目录中的文件夹内的文件?

例如

0 投票
2 回答
473 浏览

c - NIF 调用 Erlang 后二进制变化的值

我打算使用 NIF 为我打算在 Erlang 中编写代码的应用程序操作二进制文件。下面给出了 NIF 的 cpp 文件和 erl 文件的要点链接。

[Erl 要点链接] https://gist.github.com/abhijitiitr/3a5bc97184d6dd32f97b

[C++ 要点链接] https://gist.github.com/abhijitiitr/24d2b780f2cdacebfb07

基本上我正在尝试做一个简单的测试。在 NIF 调用之间共享二进制文件,并通过连续的 NIF 调用成功地操作它们。

如果您通过以下方式测试 erlang REPL 中的代码

二进制文件存储了 NIF 调用之间的更改。第三个命令的 REPL 输出是

<<1>>在初始化阶段通过了。为什么改成<<60>>? 我无法弄清楚这里发生了什么。有人可以指出错误吗?

C++编译指令

在我的 Mac 上。

我还想询问有关在 NIF 中操作共享资源的并发进程。这是可能的还是有一个规则是必须在单个 Erlang 进程中访问 NIF。

0 投票
2 回答
1318 浏览

erlang - Erlang 生成过程

以下是我尝试在其中生成 3 个进程的程序,形成一种称为最佳的方法。我想接收来自所有进程的响应并将它们存储在一个元组中,但我只能得到一个响应。

有人可以帮我解决这个问题吗

0 投票
4 回答
11094 浏览

erlang - 如何检查Erlang中的列表是否为空?

基本上我有一个结构,其中包括一个值和一个 ID 列表。我想要做的是映射 Id 列表并向他们发送消息,但是当我第一次初始化 Id 列表时,我放置了变量“empty_set”。(也许我应该将它重命名为 empty_list :P)。

问题是,每当我调用 map 函数时,我首先要检查列表是否为“empty_set”,如果不是,则使用其中的 map 函数。这是代码:

这是被调用的函数:

这就是我启动该过程的方式:

问题是当我运行它时,我得到了这个错误:

据我了解,尽管 if 表达式我必须检查列表是否为空,但它仍会尝试映射它。

那么我在表达上做错了什么?

谢谢

0 投票
1 回答
497 浏览

erlang - 如何检查 Pid 是否是 Erlang 中 Pid 列表的成员?

我有一个为进程 Pid 设置值的函数,我可以让一个进程依赖于另一个进程。因此,如果我为进程设置一个值,那么我还必须为依赖它的进程设置该值。但是,如果进程之间有一个圆圈

然后我想返回一条错误消息。

我尝试通过传递一个已经更改值的 Pid 列表来做到这一点,这样如果我两次遇到同一个 Pid(通过检查它是否是 Pid 列表的成员),那么整个函数就会停止。这是我的代码:

当我运行它时,我得到这个错误:

据我了解,我给列表提供了错误的论点:成员函数。我应该怎么办?

谢谢

0 投票
1 回答
5789 浏览

erlang - 如何在 Erlang 中执行系统命令并使用 os:cmd/1 获取结果?

当我尝试执行以下返回错误或在 Windows 上不退出的命令时 - 我总是得到空列表,而不是作为字符串返回的错误,例如:

我得到:

而不是像

在 linux 中 - 一切都按预期工作,所以我得到 "/bin/sh: line 1: blah: command not found\n"

因此,当我需要知道执行如何完成等时,我不能依赖该函数。请提出一些通用的方法来执行命令并获得包括错误代码在内的结果。

谢谢!

0 投票
1 回答
206 浏览

debugging - 将 erlang 的梁文件转储到文件系统

我有一个remsh正在工作的 Erlang 应用程序:

我的问题是:如何将梁文件保存到文件系统的另一个位置?