将数据从一个cli应用程序传递到另一个应用程序的最佳方法是什么

时间:2013-01-15 12:46:26

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

例如,如何将数据从一个cli应用程序(例如Ruby脚本)传递到PHP脚本。我的意思是原始数据,文本,二进制等。由于使用临时文件的原始数据,参数丢失也是有点蹩脚的。我知道最后一件可行的事情是stdin,stdout。也许有人知道更好的事情?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

实际上没有办法实现它,它只取决于应用程序的类型和数据类型。

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

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

如果要在不同语言之间移动数据,请使用JSON,XML或YAML以及其中一条数据路径。

我们经常将JSON用于我们的应用程序间数据格式,并编写我们的代码以允许它在我们设置命令行标志时发出JSON。这使我们可以轻松地使用一些REST服务包装命令行应用程序,并远程调用它们,将其结果投放到Web上。

所有这一切都说,没有一条硬性规则可以说明如何完成任务,只需与您的代码保持一致并遵循您正在使用的应用程序的风格。