作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何获取命令提示符的输出,这意味着我已经打开了这样的命令提示符。
Process process = Runtime.getRuntime().exec("cmd /c start cmd.exe /K \"C:\\Editor\\editorTemp.exe\"");
我无法得到这样的cmd输出
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
那么我怎样才能得到命令提示符输出呢?
最佳答案
这不是 Java 问题。基本上,您所做的是运行 Java(Java 主进程 A)并从中启动另一个进程(Windows CMD B)。这很好,您可以在 Java(A) 中获得此进程 (B) 的输入/输出流。然而,这个进程 (B) 启动了另一个进程(同样是 Windows CMD C),它有自己的标准输入/输出。此进程与进程 A 和 B 没有任何共同点,它使用 Windows 的标准输入/输出流。因此,A 和 C 之间没有任何联系。我不确定,但我认为有一些方法可以使用不同或非标准 IO 运行 Windows CMD。也许这样的事情会奏效:
cmd <tty >tty
但是 Windows 中没有 tty。实际上,您可以按照描述执行此操作 here - Creating a Child Process with Redirected Input and Output但这对常规 CMD 不起作用。
然而,当您从 editorTemp.exe(进程 D)启动自己的进程时,问题变得更加严重。 D 与进程 A 的脱节甚至更多。这一切都是为了什么?什么不直接从 A 启动进程 D 并完全控制 IO 流和进程本身?这里好example怎么做。
关于java - 如何在java中获取命令提示符输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31635379/
我是一名优秀的程序员,十分优秀!