繁体   English   中英

Java应用程式从cmd.exe控制台窃取标准输入

[英]Java app 'steals' stdin from cmd.exe console

我正在尝试在Windows 7下将Java应用程序作为生成的子进程运行。我使用的命令位于以下行中: java -cp ...list of libs...问题是,一旦应用程序加载,它就会没有自己的标准输入流,但尝试使用其父级的标准输入,导致无法将命令传递给它。 是否有任何'java.exe'参数可以欺骗这种行为,所以子进程将具有自己的stdin? 谢谢

更新:对不起,我不是一名Java程序员,但是由于我正在运行的Java应用程序中的这一行,是否可能发生这种情况:

this(new IO(System.in, System.out, System.err), STANDARD_INPUT_PROMPT, STANDARD_RESULT_PROMPT);

如果是这样,什么是System.in的适当替代品?

为什么不只是启动一个新的命令提示符来生成子进程呢? 我对Windows环境的编程不多,但是我可以进行以下工作:

public class Main {
  public static void main(String [] args) {
    try {
        Runtime.getRuntime().exec("cmd /k start cmd /k echo hello");
    } catch (Throwable t) {
        t.printStackTrace();
    }
  }
}

如果用子进程程序替换了echo并用必要的参数打了个招呼,那么您应该都准备好接收stdin了。 换句话说:

Runtime.getRuntime().exec("cmd /k start cmd /k java -cp ...list of libs...");

顺便说一下,可能有一种更漂亮的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM