Java进程-等待进程退出

Java进程-等待进程退出,java,Java,我试图在java程序中使用python脚本。如果python在java之外运行,它会启动,然后等待事件发生,当事件发生时,它会执行一些操作,打印结果并退出 当我尝试在Java中使用它时,它不会等待事件,而是立即退出并返回空响应。如何等待脚本退出,从而挂起java程序直到退出 这就是我正在测试的方法 public static String readRFID() throws IOException, InterruptedException { ProcessBuilder p

我试图在java程序中使用python脚本。如果python在java之外运行,它会启动,然后等待事件发生,当事件发生时,它会执行一些操作,打印结果并退出

当我尝试在Java中使用它时,它不会等待事件,而是立即退出并返回空响应。如何等待脚本退出,从而挂起java程序直到退出

这就是我正在测试的方法

public static String readRFID() throws IOException, InterruptedException {

        ProcessBuilder pb = new ProcessBuilder("python", "/home/pi/MFRC522-python/Read.py");
        Process p = pb.start();

         BufferedReader br=new BufferedReader(
            new InputStreamReader(
               p.getInputStream()));

         p.waitFor();
         StringBuilder sb = new StringBuilder();
            while(br.readLine() != null) {
                sb.append(br.readLine());
            }
           return sb.toString();

    }
  • waitFor()
    肯定应该在读取循环之后
  • 您需要关闭进程的
    stdin
    ;及
  • 您需要使用所有的
    stdout
    stderr

waitFor可能应该在循环之后。Python脚本是否从标准输入读取?当从Java应用程序运行时,脚本的标准输入不是从命令行运行时的输入。我在循环后放了waitFor()(愚蠢的错误…),但我不理解其他两点的意思…检查API。这很明显。您已经在使用
stdout