gpt4 book ai didi

java - ProcessBuilder 在前台运行进程

转载 作者:行者123 更新时间:2023-12-01 14:23:57 26 4
gpt4 key购买 nike

我想运行一个用 C++ 编写的可执行文件,并在前台查看与其关联的 cmd promt,因为可执行文件在 cmd 中打印了一些行。

我编写了以下代码,但所有进程都是在后台创建和运行的(在这段代码中,我打开了虚拟 cmd.exe 进程,而不是我的进程)。

Process p = new ProcessBuilder("C:\\Windows\\System32\\cmd.exe").start();

如何启用进程的前台运行?

谢谢!

最佳答案

问题不在于进程是在前台还是后台。当您使用 Java 启动一个进程时,您必须使用 Java 来控制该进程的生命周期。 Java API 使您可以访问流程的各种属性。您在这里感兴趣的是过程的输出。这由进程的 InputStream 表示。这似乎违反直觉,但它是有道理的,因为从 Java 程序的角度来看,进程的输出就是程序的输入。相反,如果您需要向进程发送数据,则写入进程的 OutputStream

总而言之,访问进程的 InputStream 并将其打印到命令行:

Process process = new ProcessBuilder("C:\\Path\\To\\My\\Application.exe").start();

BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line);
}

System.out.println(line);

当然,此代码假定您的进程不等待任何输入,即它不是交互式的。

关于java - ProcessBuilder 在前台运行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393535/

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