【问题标题】:Java spawn new cmd.exe and get the output streamJava 生成新的 cmd.exe 并获取输出流
【发布时间】:2015-04-27 01:01:45
【问题描述】:

我正在尝试在 java 中生成一个新控制台并获取输出流。

我试过这样:

Process p = Runtime.getRuntime().exec("cmd.exe /c start");
BufferedWriter out = new BufferedWriter( new OutputStreamWriter(
                                         p.getOutputStream()));

控制台生成,但我无法在流上写一些东西!

另一种方式:

Process p = Runtime.getRuntime().exec("cmd.exe");
  BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
               p.getOutputStream()));

这次我可以写入流,但控制台没有生成!

我缺乏知识:/

提前谢谢你。

【问题讨论】:

  • 我不是游戏机专家。然而,从实验中我可以看出,当第一个示例,第一行运行时,cmd 被打开并等待系统命令。由于 Writers 依赖于在特定输出区域上运行的 java 虚拟机,因此我认为您根本无法输出到新的 cmd,因为它没有运行任何形式的虚拟机。如果你想打开一个只是原始扩展的 cmd 窗口(不显示 Windows 版本或任何东西,只是一个黑屏),这可能是一个可行的想法。
  • ..如果你从cmd(.bat) 运行另一种方式,感觉就像是非常细微的差别。什么可以证明这样的努力是合理的(我认为,也没有进一步的参考,只是我的前评论:不可能得到那个输出将是痛苦的)......用“这种方式”。

标签: java process console


【解决方案1】:

在您的第一种方式中,您启动了 cmd,它启动了另一个您也无权访问的进程。如果您需要输入/输出流,请不要使用这种方式。

另一种方式是正确的。进程运行良好。但是您没有为此提供任何输入。获取输入流并发送一些命令,如“cd foo\n”、“dir\n”。如您所见,这是常规流,因此需要执行命令。然后你也可以使用输出流。

有很多examples怎么办。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2012-12-29
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多