2
如何使用Runtime.getRunTime.exec()发送和接收多个输入。使用java的交互式命令Runtime.getRunTime.exec()
例如,如果我想运行诸如openSSL之类的东西来生成csr,它会询问诸如状态,城市,常用名等内容。
Process p = Runtime.getRuntime().exec(cmd);
OutputStream out = p.getOutputStream();
//print stuff p.getInputStream();
//Now i want to send some inputs
out.write("test".getBytes());
//flush and close??? don't know what to do here
//print what ever is returned
//Now i want to send some more inputs
out.write("test2".getBytes());
//print what ever is returned.. and so on until this is complete
为什么不使用p.getInputStream()来读取你所需要的使用out.write而 发送()相应地发送数据。
Process p = Runtime.getRuntime().exec(cmd);
OutputStream out = p.getOutputStream();
//print stuff p.getInputStream();
out.write("test".getBytes());
out.close(); //if i don't close, it will just sit there
//print stuff p.getInputStream();
out.write("test".getBytes()); // I can no longer write at this point, maybe because the outputstream was closed?
这就是我试图做的,但它似乎是写工作不正常。我会用更多的解释来更新这个问题。 – boyco 2012-02-21 23:44:36
不要忘记冲洗:) – james 2012-02-21 23:49:12
这工作,我尝试使用冲洗前,但我想这么多不同的东西,我必须搞砸了别的东西,导致它不工作。谢谢! – boyco 2012-02-21 23:57:54