如何使用Java将IRB发送到后台?

如何使用Java将IRB发送到后台?,java,ruby,jruby,Java,Ruby,Jruby,我有一个IRB,我想将它发送到后台,并使用Java评估IRB的命令。 我尝试了类似于[1]的方法,但它无法识别任何命令 [1] 如果希望在后台执行,那么不希望直接执行Ruby脚本,而是希望调用shell来执行Ruby脚本 对于Windows,请使用“开始”。对于Linux,使用“&”有什么特别的原因使您希望在单独的IRB过程中评估ruby,而不是直接从java评估ruby 这会简单得多。我想使用Java将IRB发送到后台。(我有一个扩展HttpServlet的类,因此IRB将在http会话期间

我有一个IRB,我想将它发送到后台,并使用Java评估IRB的命令。 我尝试了类似于[1]的方法,但它无法识别任何命令

[1]


如果希望在后台执行,那么不希望直接执行Ruby脚本,而是希望调用shell来执行Ruby脚本


对于Windows,请使用“开始”。对于Linux,使用“&”

有什么特别的原因使您希望在单独的IRB过程中评估ruby,而不是直接从java评估ruby


这会简单得多。

我想使用Java将IRB发送到后台。(我有一个扩展HttpServlet的类,因此IRB将在http会话期间保持活动状态)。问题是我不知道如何评估这些命令。要“在后台执行”,您需要按照我的建议执行。或者将其包装在.bat文件(Windows)或shell脚本(Linux)中。要“评估命令”,您可以执行您正在执行的操作(使用“proc.getInputStream()”读取进程的“stdout”。或者,您也可以创建管道、打开套接字等。请确保在向进程写入时,向它发送回车符,否则它可能无法获取数据
String response = "";
ProcessBuilder pb = new ProcessBuilder(myIrb); //myIrb is a unix script which starts the IRB

try {
  pb.command(myCommand);
  Process proc = pb.start();
  InputStream input = proc.getInputStream();
  int i;
  while((i = input.read()) != -1) {
    char c = (char)i;
    response += c;
  } catch (IOException e) {
    response = e.toString();
  }

System.out.println(response);