【问题标题】:Run Executable File, Listen To Output运行可执行文件,监听输出
【发布时间】:2014-10-08 16:36:06
【问题描述】:

我想为另一个程序制作一个引导程序,它将接受引导程序发送给它的命令,并且引导程序需要从它运行的程序接收控制台输出。这怎么可能?

Runtime.getRuntime().exec("COMMAND")

上面的代码执行一个命令,所以我可以这样做:

Runtime.getRuntime().exec("java -jar file.jar")

但是如何监听输出并向其发送命令,就好像它们是在控制台中输入的一样?

【问题讨论】:

    标签: java command output


    【解决方案1】:

    Runtime.exec()返回的Process对象中,有getInputStream()getOutputStream()getErrorStream()分别对应STDINSTDOUTSTDERR的访问器。您必须使用线程和/或流事件来侦听和读取您执行的进程。

    http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

    另见:java: how to both read and write to & from process thru pipe (stdin/stdout)

    虽然,如果您正在调用 java 程序,那么设置 PipedInputStreamPipedOutputStream 对并直接调用 jar 的 main() 例程而不是启动新的 JVM 可能会更好。

    【讨论】:

    • 谢谢。这真的很有帮助!
    • 为了在你的第一个方法中不断地听输出,有什么比有一个while循环并每次读取一行输出流更好的方法?
    • 流事件,它是 NIO 框架的一部分。以 Netty 为例 (netty.io/4.0/api/io/netty/channel/nio/NioEventLoop.html)
    猜你喜欢
    • 1970-01-01
    • 2019-10-17
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多