gpt4 book ai didi

java - 在java程序中运行命令行程序

转载 作者:行者123 更新时间:2023-12-02 08:04:25 24 4
gpt4 key购买 nike

我正在尝试在 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程序结束时,Program.exe有时不会停止
  • 即使 Program.exe 结束,java 程序也不会结束
  • theProgram.exe 未完成就停止,并且 java 程序也不会停止。

更多信息:

  • 我在 Windows7 中使用 cygwin

最佳答案

当您的 java 程序退出时,使用 Process pr 调用此方法将终止进程:

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();
}

关于java - 在java程序中运行命令行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8389460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com