【问题标题】:how do you return a string from an Erlang C node?如何从 Erlang C 节点返回字符串?
【发布时间】:2012-10-18 08:09:16
【问题描述】:

我希望能够将字符串 - 列表 - 传递给 Erlang 的 C 节点,并在经过一些计算后将字符串返回给 Erlang 进程。

result = function(input_string),

其中 input_string 的类型为 ETERM *

我对字符串的计算使用 char * 字符串变量。

如果这些信息足够继续,请告诉我。

[erl_interface 教程中的 C 节点示例使用 C 节点的整数输入和输出]

TIA,
BR,
谢伦

【问题讨论】:

  • 您考虑过使用 nif 吗? erlang.org/doc/man/erl_nif.html imo 更容易实现,并且有一个钢筋模板,这使得更容易。
  • @cashmere,nif 不适合将多个大文件读入搜索空间的要求,但在启动时,而不是在每次调用时,谢谢。
  • @ombud 一个 NIF 库可以指定一个 load 函数,该函数可以将信息写入其参数 *priv_data。然后,您可以使用名为 enif_priv_data 的函数在每次 NIF 调用时获取指向此数据的指针。

标签: string erlang


【解决方案1】:

使用erl_iolist_to_string 作为输入(每个Erlang“字符串”也是一个iolist)。

使用erl_mk_string 代替erl_mk_int 进行输出。

http://erlang.org/doc/man/erl_eterm.html#erl_iolist_to_string

http://erlang.org/doc/man/erl_eterm.html#erl_mk_string

【讨论】:

  • 谢谢@r3m0t,应该这样做。
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 2012-12-07
  • 2016-11-27
  • 2020-12-12
  • 2014-11-06
相关资源
最近更新 更多