0

我一直在尝试编写一个应用程序,该应用程序允许我以选项卡式方式打开多个控制台会话(在 cmd.exe 的窗口中)。

我发现的最重要的参考资料之一是在以下 URL 中,我能够在其中获得 TextAreaOutputStream 代码,以便能够从进程中读取 STDOUT,但是这和互联网上的大多数参考资料都没有解决/修复我正在处理的问题。

参考: 在 GUI 面板中创建 Java 控制台

即使重定向 STDOUT、STDERR 和 STDIN 给我带来了一些麻烦,最糟糕的是,当您在 Java 控制台中的一个选项卡中键入的命令执行创建子进程的命令时,我的 Java 应用程序就在这里失去控制,因为在后台创建了一个新进程。基本上,新的子进程超出了界限,我无法接收或发送任何字节给它,我的应用程序挂起。

  • 虚拟机
    • MyTabbedConsoleApp
      • cmd.exe /k(我仍然可以与这个通信,直到这里没有问题)
        • apptrack.exe(我的应用程序超出范围的子进程,与此没有通信,应用程序挂起)

我正在寻找一种更好的方法来创建一个几乎模仿控制台环境的应用程序。

4

1 回答 1

0

您应该使用ProcessBuilder而不是,Runtime因为它是处理操作系统进程的推荐 API。

检查Java 6u45 发行说明的Runtime.exec 更改主题。

自 JDK 5.0 以来创建操作系统进程的首选方法是使用 java.lang.ProcessBuilder。ProcessBuilder 类具有更完整的 API 用于设置环境、工作目录和重定向流程的流。

于 2015-01-30T23:33:06.373 回答