我想为另一个程序创建一个bootstrap程序,它将接受引导程序发送它的命令,并且引导程序需要从它运行的程序接收控制台输出。这怎么可能?
Runtime.getRuntime().exec("COMMAND")
上面的代码执行命令,所以我可以这样做:
Runtime.getRuntime().exec("java -jar file.jar")
但是如何监听输出并向它发送命令,好像它们已经在控制台中输入一样?
答案 0 :(得分:0)
在Process
返回的Runtime.exec()
对象中,getInputStream()
,getOutputStream()
和getErrorStream()
的访问者为STDIN
,{{1}分别和STDOUT
。您必须使用线程和/或流事件来监听和读取您执行的进程。
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程序,你可能会更好地设置STDERR
和PipedInputStream
对并直接调用jar的PipedOutputStream
例程而不是旋转一个新的JVM。