所以我有这个程序
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结束。我做错了什么?
此致
答案 0 :(得分:5)
如果没有抛出异常,Java正在等待进程结束。该过程可能在没有完成手头任务的情况下结束。您可能需要从过程中读取输出并显示它以找出出错的地方。
查看有关使用Runtime.exec()的这篇文章: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
希望在调试问题时对你有所帮助。
答案 1 :(得分:3)
waitFor()方法将使调用线程等到进程p完成(这可能很危险,因为如果进程在任何无限循环中被阻塞,主线程将一直等待。
我建议写一些信号量文件,并在你的进程从java文件完成时设置一些值。主方法可以等待检查信号量文件的状态。