【问题标题】:erlang embedded into Cerlang嵌入到C中
【发布时间】:2011-06-22 01:55:59
【问题描述】:

我希望将 Erlang VM 嵌入到 C 代码中...我熟悉端口、linkedin 驱动程序等。 我希望 C 程序启动 Erlang VM,然后将消息传递给 Erlang 进程,然后将这些消息传递回 C 代码。我不希望 erlang VM 先启动然后偶尔调用 C 代码。我有我的理由。
我知道这会对 Erlang 提供的稳定性保证产生负面影响,这意味着当主 C 代码崩溃时,它也会关闭 Erlang VM,因为它们在同一个进程中运行。我愿意忍受这些事件......

这可能吗?

【问题讨论】:

  • +1 以平衡不加评论的投票。这似乎是一个合理的问题,对 erlang 开发人员很感兴趣。
  • 重要的也是你为什么要这样做?如果你只说“你有你的理由”,那么它不太可能从答案中得到最大的收益。我的意思是肯定有可能,因为你已经得到了来源。但它是否有意义是另一个问题。此外,与 C 代码交互的方式也会改变您想要集成它的方式。

标签: c erlang


【解决方案1】:

最简单的方法是将它作为一个单独的进程启动,然后使用标准输入和标准输出进行通信。只需阅读您所针对的任何平台的文档,您就会知道如何做到这一点。

【讨论】:

  • 我熟悉这种方法...域套接字也是一种替代方法,或者直接使用内存映射文件...我的目标是在自定义 C 代码和 Erlang 之间共享相同的内存空间虚拟机本身...对于 erlang 和 C 代码之间的通信 i/o、没有上下文切换等,永远不会触及操作系统内核...
【解决方案2】:

这样做的唯一明智的方法是从 Erlang VM 加载 C 代码,反之亦然。

不可能开箱即用,但是由于您可以访问 Erlang 源代码,如果您愿意花大量时间修改代码,显然可以做任何您想做的事情。沿着这条路走不是很好地利用你的时间。

【讨论】:

  • 是的,我昨晚有点想通了……不过还是感谢您的确认。看来 erlang 真的是终极控制器,别无选择,只能让其他一切都由它开始;))。我喜欢二郎 ;))
猜你喜欢
  • 1970-01-01
  • 2020-12-23
  • 2020-12-12
  • 2014-09-17
  • 1970-01-01
  • 2011-04-01
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多