gpt4 book ai didi

java - 如何使用 ProcessBuilder 打开带有 .txt 文件作为参数的 .exe 文件

转载 作者:行者123 更新时间:2023-11-29 08:23:34 25 4
gpt4 key购买 nike

我正在将 .exe 文件的输出映射到我的 Java 应用程序。一些 .exe 文件接受参数作为 .txt 文件。如果 .exe 文件不需要 .txt 文件作为参数,我会在运行时使用 ProcessBuilder().start() 从中获取输出。但是,如果它需要 .txt 文件作为参数,则 .exe 文件不会提供任何输出。 .exe 文件是从 c 程序生成的。

Process process = new Process() {
@Override
public OutputStream getOutputStream() {
return null;
}

@Override
public InputStream getInputStream() {
return null;
}
@Override
public InputStream getErrorStream() {
return null;
}
@Override
public int waitFor() throws InterruptedException {
return 0;
}
@Override
public int exitValue() {
return 0;
}
@Override
public void destroy() {

}
};

if(bench.equals("bank")) {
process = new ProcessBuilder("./ref/tinySTM/test/bank/bank", "-n"+thread_count, "-d20").start();
}
else if(bench.equals("kmeans")) {
process = new ProcessBuilder("./ref/stamp/kmeans/kmeans", "-m40", "-n40", "-t0.05", "-i random-n2048-d16-c16.txt", "-p"+thread_count).start();
}
else{
System.out.println("Error. Invalid benchmark "+bench);
System.exit(0);
}
BufferedReader input = new BufferedReader (new InputStreamReader(process.getInputStream()));
while ((op = input.readLine()) != null) {
System.out.println(op);
}
input.close();

执行 bank 会给出正确的输出,但执行 kmeans 不会给出任何输出。

最佳答案

我猜 kmeans 正在 stderr 上打印一条错误消息,但您没有从 process.getErrorStream() 中读取,所以消息丢失了。这里至少有一个问题:

"-i random-n2048-d16-c16.txt"

您需要传递两个参数:

"-i", "random-n2048-d16-c16.txt"

或者,如果 kmeans 将它们作为一个整体接受,则去掉空格:

"-irandom-n2048-d16-c16.txt"

关于java - 如何使用 ProcessBuilder 打开带有 .txt 文件作为参数的 .exe 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369641/

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