等待进程以Java结束

时间:2012-12-18 17:53:35

标签: java process

所以我有这个程序

    String[] cmd = {"gnome-terminal", "--full-screen", "-e", "./toMatrix"};
    Process p = Runtime.getRuntime().exec(cmd);
    copy(p.getInputStream(), System.out);
    p.waitFor();  
    System.out.println("Exit value = " + p.exitValue());

我想让它在另一个过程中运行到Ctrix程序到Matrix。但我需要它在新的终端窗口和全屏模式下运行,所以我需要传递这些参数。问题是主进程不等待进程p结束。我做错了什么?

此致

2 个答案:

答案 0 :(得分:5)

如果没有抛出异常,Java正在等待进程结束。该过程可能在没有完成手头任务的情况下结束。您可能需要从过程中读取输出并显示它以找出出错的地方。

查看有关使用Runtime.exec()的这篇文章: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

希望在调试问题时对你有所帮助。

答案 1 :(得分:3)

waitFor()方法将使调用线程等到进程p完成(这可能很危险,因为如果进程在任何无限循环中被阻塞,主线程将一直等待。

我建议写一些信号量文件,并在你的进程从java文件完成时设置一些值。主方法可以等待检查信号量文件的状态。