问题标签 [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.
erlang - 如何从 erlang 节点监控 cnode
我一直在基于 cnode 教程http://www.erlang.org/doc/tutorial/cnode.html构建一个应用程序,一切看起来都很好 - 但是我的问题是,有没有办法做类似于nodes()
或net_adm:world()
获取连接的节点列表?
目前,我无法使用任一命令查看节点。
erlang - erlang c-node 传递二进制对象
我正在关注 Erlang C Nodes 教程,并试图对 libXl C 库进行包装调用。在我的 C 节点中,创建一个 BookHandle 并将其作为一个消息调用的响应传递。
我的问题是我可以使用该响应向具有相同对象的 C 节点发送另一条消息吗?例如发送
并在 C 节点中有类似下面的代码来获取传递的 BookHandle
这样的事情是否可能,或者为特定功能创建包装器需要在每次向 C 节点发送消息时创建 BookHandle。
对不起,如果这没有任何意义,我对这一切都是新手。
erlang - erl_publish 因部分数据包而失败
我在尝试启动 C 节点服务器时遇到了一个奇怪的问题。我正在关注http://www.erlang.org/doc/tutorial/cnode.html中的示例。
我发现我会失败
在调试模式下运行 epmd 失败后显示以下消息:
gdb 显示应用程序在检查有效响应时在 epmd_publish.c 中出现错误。
你以前见过这个吗?我在系统中配置了什么错误吗?我感到很困惑。
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()
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。还需要什么?
process - 在 Erlang C 节点中实现进程链接
我知道不支持在 C 节点上监视“进程”,但是如果我尝试为源自 Erlang 节点上的 C 节点的 pid 调用链接,我的 C 节点首先会收到一条ERL_LINK
消息,然后过一会儿会收到一条ERL_EXIT
消息因为显然链接的 Erlang 进程崩溃了。
可能是因为我的 C 节点没有响应ERL_LINK
并且 Erlang 确定我的 C 节点“进程”已经死亡。
我想知道这是否被支持?以及 C 节点需要如何处理ERL_LINK
消息才能使其工作。
erlang - 如果远程节点上没有注册处理,分布式消息发送结果如何回复?
根据 Erlang 参考手册,发送运算符 (!)的语法是Expr1 ! Expr2
.
它指出
Expr1
可以是 形式的元组{Name, Node}
,其中 "Name
是一个原子,Node
是一个节点名称,也是一个原子”,并且- “分布式消息发送 [...] 永远不会失败”。
使用FreeSWITCH时mod_erlang_event
(启动 Erlang C 节点)一起使用时,并使用任何原子作为 发送消息Name
,它将导致响应:
为什么这不适用于下面的两个常规 Erlang 节点?
上面的原子也不是注册的进程,消息发送感觉就像一个远程过程调用。
偷看了mod_erlang_event
's source,但我没有太多 C 经验,也没有使用过非原生 Erlang 节点。感觉好像运行一个 C 节点会导致
(1) 运行一个 Erlang 节点
(2) 并自动启动一个进程
(使用 C 逻辑作为该receive
进程的循环)
(3) 将匹配任何原子。
所以也许这就是为什么只有显式注册的进程才能与原生 Erlang 节点一起使用的原因。(再一次,我可能完全错了。)
起始节点“def”:
回到较早开始的节点“abc”:
和freeswitch@tr2
也test@tr2
立即连接为隐藏节点,但这种行为似乎与abc@tr2
and相同def@tr2
。