0

可能重复:
如何使用 javas Process.waitFor()?

我有一个程序可以在我的电脑上上传到 Arduino。我创建了一个 makefile 用于编译并将其上传到 arduino fio。

它工作正常。现在我正在尝试创建一个用于执行该 makefile 的 java 程序,但我对这个命令有问题:

Runtime.getRuntime().exec("make");

当我执行它时,程序被阻塞。

我应该做些什么来执行该命令?使用其他命令,它工作正常。使清洁,使依赖....

我正在尝试使用我在互联网上找到的用于该任务的代码:

public static void prueba() throws InterruptedException, IOException {

    Process proc = Runtime.getRuntime().exec("make");
    int size;
    String s;
    int exCode = proc.waitFor();
    StringBuffer ret = new StringBuffer();



    while((size = proc.getInputStream().available()) != 0) {
        byte[] b = new byte[size];
        proc.getInputStream().read(b);
        s = new String(b);
        ret.append(s);
    }
    System.out.println(ret.toString());         
}
4

1 回答 1

1

在调用之前,您需要在单独的线程中读取输入流(stdout)和错误流(stderr)process.waitFor(),以防止阻塞。

这篇文章是必读的:“当 Runtime.exec() 不会”并告诉你如何Runtime.exec正确使用。

于 2012-12-10T08:51:17.317 回答