【问题标题】:Transfer array from perl to c [closed]将数组从perl转移到c [关闭]
【发布时间】:2013-11-26 12:36:05
【问题描述】:

我可以将数组从 perl 转移到 c 而不将任何东西写入 hdd 吗?我可以在 perl 中生成一个数组,将其保存在文件中并在 c 中读取。但是是否可以只在内存中执行此操作?

【问题讨论】:

  • 是的。你需要学习 XS,看看 perlxstut:perldoc.perl.org/perlxstut.html - 或者你可以通过像 memcached 这样的单独进程传输数据 - 只要你乐于扩展你的 C 代码以添加必要的客户端和格式处理(在 Perl 中这更容易)
  • 所以你有外部编译的二进制文件或者你想在perl中使用C?
  • 我更喜欢外部二进制文件。但如果这是唯一的可能性,我也可以在 perl 中使用 c。
  • argv 怎么样?

标签: c perl


【解决方案1】:

您可以使用 Perl API 在 Perl 代码和 C 之间进行交流,这一切都可以在内存中进行(无需将中间形式写入磁盘)。

处理数组的各种调用的详细信息可从perl.org 获得。

请记住,虽然 Perl 数组的内容是 Perl 标量值 (SV),而不仅仅是 C 数组中的整数或指针,因此您必须使用 Perl API 将数据解码为您可以处理的内容在你的 C 程序中。

【讨论】:

    【解决方案2】:

    这听起来根本不像是关于 Perl 或 C 的问题,而是关于如何将信息从一个程序传输到另一个程序的问题(“我更喜欢使用外部二进制文件。”)这称为进程间通信 (IPC)。

    如果 Perl 程序启动 C 程序,您可以使用参数列表传递数据。

    如果 C 程序启动 Perl 程序,您将创建一个管道并将其绑定到孩子的 STDOUT。 Perl 程序会将数据打印到 STDOUT,而 C 程序会从管道中读取数据。

    如果两个程序都没有启动另一个,那么套接字是显而易见的解决方案,尽管还有许多其他可能性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 2011-04-03
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2012-11-16
      相关资源
      最近更新 更多