[英]Running command line program inside java program
我试图运行一个程序,需要很长时间才能完成java程序。 java程序中的程序输出一个巨大的文件(介于4到6 GB之间)。 我在main方法中使用以下代码。
//get the runtime goinog
Runtime rt = Runtime.getRuntime();
//execute program
Process pr = rt.exec("theProgram.exe");
//wqit forprogram to finish
pr.waitFor();
我收到了一些错误:
更多信息:
最好在Java代码的末尾包含pr.destroy()
,以便在程序结束时终止进程。 这解决了错误#1
在这些情况下, pr.exitValue()
返回什么?
使用Process pr
调用此方法将在java程序退出时终止该过程 :
private void attachShutdownHook(final Process process) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
process.destroy();
}
});
}
如果您的进程有输出,您可以使用它来评估其进度,然后通过调用以下方法将输出重定向到java:
private void redirectOutputStreamsToConsole(Process process) {
redirectStream(process.getInputStream(), System.out);
redirectStream(process.getErrorStream(), System.err);
}
private void redirectStream(final InputStream in, final PrintStream out) {
new Thread() {
@Override
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = reader.readLine()) != null)
out.println(line);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}.start();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.