让Java与Python,C,C ++和Ruby交流

时间:2011-01-19 14:56:17

标签: java c++ python c ruby

我已经成功地让ProcessBuilder运行外部脚本,但我仍然需要让Java与外部脚本进行通信。我认为我应该从进程中获取输入/输出流,并使用它们来发送和接收数据。给脚本提供输入时遇到的麻烦最多。看来我可以通过使用脚本的print函数从脚本中获取输出,但我似乎无法从主java程序中获取脚本来注册输入。

这个问题涉及四种语言,所以如果你只发布一种语言的答案就可以了。

3 个答案:

答案 0 :(得分:2)

Process类上的方法getOutputStream()返回一个可以用Java写入的流,该流连接到进程的stdin流。您应该能够读取这个,因为您通常会读取每种语言的标准输入(例如,cin for C ++,scanf for C,STDIN.read for Ruby,不知道Python!)

如果这就是你正在做的而且它不起作用(你的问题听起来可能是这样,但很难说),你可以发布一些代码,以便更容易看到你可能做错了吗? / p>

答案 1 :(得分:1)

您应该使用标准的进程间机制,如管道或套接字。

所有这些语言都有可用的库,这个策略允许任何两个进程之间的通信(Java / Ruby,Ruby / Python,Java / C等)

答案 2 :(得分:0)

就让Java与Python交谈,您考虑过Jython吗?

关于C和C ++,标准的想法是使用Java Native Interface。一旦你可以与C / C ++交谈,你就可以使用C / C ++与几乎任何其他语言交流,包括Python和Ruby。