【问题标题】:What is the best way to pass data from one cli app to another将数据从一个 cli 应用程序传递到另一个应用程序的最佳方法是什么
【发布时间】:2013-01-15 12:46:25
【问题描述】:

例如如何将数据从一个 cli 应用程序(例如 Ruby 脚本)传递到 PHP 脚本。我的意思是原始数据、文本、二进制文件等。由于使用临时文件的原始数据,争论也很糟糕。我知道的最后一件事是标准输入,标准输出。也许有人知道更好?

【问题讨论】:

  • xml 一般用于不同应用程序之间的通信。
  • 他没有问使用什么格式,他问的是如何在程序之间发送数据。这没有回答问题。

标签: php ruby shell command-line command-line-interface


【解决方案1】:

取决于这些程序的执行方式(彼此相关)。如果一个停止并启动另一个,stdin/out 甚至转储文件可能会起作用(尽管它可能被认为是蹩脚的,但它确实可以完成工作!),如果有很多数据,您甚至可以考虑创建一个小型数据库SQLite 之类的数据库中的表。这还取决于数据之间传递的数据的易失性要求。

如果存在父/子进程关系,因此父进程启动子进程,您可以考虑使用管道/fifo、共享内存或消息队列或任何其他形式的 IPC。

【讨论】:

    【解决方案2】:

    您使用的是什么操作系统?这决定了您可以使用什么。您应该使用平台常用的内容。在 *nix 系统上,我们使用管道 (|)、套接字和数据文件,具体取决于应用程序。

    确实没有一种方法可以做到这一点,它只取决于应用程序的类型和数据的类型。

    如果您要移动文本列或 CSV 数据,您可以使用管道或文本文件。

    如果您在 Ruby 应用程序之间移动哈希和对象,请使用 JSON 或“Marshall”数据和管道、套接字或文件。

    如果您要在语言之间移动数据,请使用 JSON、XML 或 YAML 以及这些数据路径之一。

    我们经常将 JSON 用于我们的应用程序间数据格式,并编写代码以允许它在我们设置命令行标志时发出 JSON。这使我们能够轻松地用一个小的 REST 服务封装命令行应用程序并远程调用它们,将它们的结果发布到网络上。

    话虽如此,并没有硬性规定如何完成任何事情,只要与您的代码保持一致并遵循您正在使用的应用程序的风格即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多