问题标签 [cnode]

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 回答
156 浏览

erlang - 如何从 erlang 节点监控 cnode

我一直在基于 cnode 教程http://www.erlang.org/doc/tutorial/cnode.html构建一个应用程序,一切看起来都很好 - 但是我的问题是,有没有办法做类似于nodes()net_adm:world()获取连接的节点列表?

目前,我无法使用任一命令查看节点。

0 投票
1 回答
204 浏览

erlang - erlang c-node 传递二进制对象

我正在关注 Erlang C Nodes 教程,并试图对 libXl C 库进行包装调用。在我的 C 节点中,创建一个 BookHandle 并将其作为一个消息调用的响应传递。

我的问题是我可以使用该响应向具有相同对象的 C 节点发送另一条消息吗?例如发送

并在 C 节点中有类似下面的代码来获取传递的 BookHandle

这样的事情是否可能,或者为特定功能创建包装器需要在每次向 C 节点发送消息时创建 BookHandle。

对不起,如果这没有任何意义,我对这一切都是新手。

0 投票
0 回答
1258 浏览

erlang - erl_publish 因部分数据包而失败

我在尝试启动 C 节点服务器时遇到了一个奇怪的问题。我正在关注http://www.erlang.org/doc/tutorial/cnode.html中的示例。

我发现我会失败

在调试模式下运行 epmd 失败后显示以下消息:

gdb 显示应用程序在检查有效响应时在 epmd_publish.c 中出现错误。

你以前见过这个吗?我在系统中配置了什么错误吗?我感到很困惑。

0 投票
1 回答
71 浏览

c - 由于在 C 中实现的 erl_interface 库导致的内存损坏

在我的应用程序中,我有一个 erlang 节点,它每 1 秒定期与 C 节点通信以收集定期数据,例如警报和性能。

C节点的实现方式是,它由两个线程组成,main线程接收来自erlang节点的请求并将消息传递给worker线程。该worker线程为 erlang 节点提供查询和回复。要回复 erlang 节点,需要使用函数将 cnode 中收集的所有数据转换为 erlang 格式(在我的情况下为元组列表)erl_format

这里观察到的问题是,在运行大约 45 分钟后,我遇到了一个glibc错误,它抱怨内存损坏。

这可能是什么原因?

我正在使用使用erl_interface线程安全选项(例如_REENTRANT)编译的库的 3.9 版本

请在我得到的 glibc 抱怨可能的内存损坏的日志下面找到

当我addr2line对地址0x101bb12c 执行操作时,它指向 erl_format()

0 投票
1 回答
95 浏览

erlang - Erlang C-Node erl_errno symbol not found 错误

我尝试按照erlang文档中的描述使用erl_errno:http: //erlang.org/doc/man/erl_error.html#

但是,我在链接过程中遇到了未找到符号的问题。我在 Mac 上运行,这是程序的链接方式:

g++ -L/usr/local/lib/erlang/lib/erl_interface-3.9.3/lib -o "roserl" ./src/driver.o ./src/erl_bridge.o -lei -lm -lerl_interface

我已经链接了libei和liberl_interface。还需要什么?

0 投票
1 回答
168 浏览

process - 在 Erlang C 节点中实现进程链接

我知道不支持在 C 节点上监视“进程”,但是如果我尝试为源自 Erlang 节点上的 C 节点的 pid 调用链接,我的 C 节点首先会收到一条ERL_LINK消息,然后过一会儿会收到一条ERL_EXIT消息因为显然链接的 Erlang 进程崩溃了。

可能是因为我的 C 节点没有响应ERL_LINK并且 Erlang 确定我的 C 节点“进程”已经死亡。

我想知道这是否被支持?以及 C 节点需要如何处理ERL_LINK消息才能使其工作。

0 投票
2 回答
65 浏览

erlang - 如果远程节点上没有注册处理,分布式消息发送结果如何回复?

根据 Erlang 参考手册,发送运算符 (!)的语法是Expr1 ! Expr2.
它指出

  • Expr1可以是 形式的元组{Name, Node},其中 "Name是一个原子,Node是一个节点名称,也是一个原子”,并且
  • 分布式消息发送 [...] 永远不会失败”。

使用FreeSWITCHmod_erlang_event(启动 Erlang C 节点)一起使用时,并使用任何原子作为 发送消息Name,它将导致响应:

为什么这不适用于下面的两个常规 Erlang 节点?

上面的原子也不是注册的进程,消息发送感觉就像一个远程过程调用。

偷看了mod_erlang_event's source,但我没有太多 C 经验,也没有使用过非原生 Erlang 节点。感觉好像运行一个 C 节点会导致
(1) 运行一个 Erlang 节点
(2) 并自动启动一个进程
(使用 C 逻辑作为该receive进程的循环)
(3) 将匹配任何原子。

所以也许这就是为什么只有显式注册的进程才能与原生 Erlang 节点一起使用的原因。(再一次,我可能完全错了。)

起始节点“def”:

回到较早开始的节点“abc”:

freeswitch@tr2test@tr2立即连接为隐藏节点,但这种行为似乎与abc@tr2and相同def@tr2