Runtime.exec()替代完整的Console Java应用程序?

时间:2015-01-30 23:22:22

标签: java process console child-process tabbed

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

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

参考: Create Java console inside a GUI panel

即使重定向STDOUT,STDERR和STDIN也会给我带来一些麻烦,最糟糕的部分是当你在其中一个标签中的Java控制台中键入的命令执行创建子进程的命令时,最糟糕的部分出现在我的Java应用程序时由于在后台创建了新进程,因此失去控制权。基本上,新的子进程是超出限制的,我无法接收或发送任何字节,我的应用程序挂起。

  • JVM
    • MyTabbedConsoleApp
      • cmd.exe / k (我仍然可以与此人沟通,直到此处没有问题)
        • apptrack.exe (从我的应用程序中绑定一个子进程,没有与此通信,应用程序挂起)

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

1 个答案:

答案 0 :(得分:0)

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

检查{6}发布说明的Changes to Runtime.exec主题。

  

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