我想从标准输出中读取长时间运行的命令。有一个程序,它向我发送一些输出,我必须发送一些响应。
问题是没有任何东西到达输入流。
我在做什么,正在执行命令,从命令中获取 InputStream 并尝试从那里读取。
SSHClient client = new SSHClient();
client.addHostKeyVerifier(new IgnoreHostKeyVerifier());
client.connect(getHostname(), getSshPort());
client.authPassword(getUsername(), getPassword());
Session sess = client.startSession();
Command cmd = sess.exec("/root/av_run/alarms");
InputStream is = cmd.getInputStream();
os = cmd.getOutputStream();
int piece;
while (true) {
if (is.available() > 0) {
piece = is.read();
} else {
Thread.sleep(500);
continue;
}
}
在这里,is.available()
始终为零。如果我在没有这种情况的情况下阅读,阅读将永远被阻止。
如何读取正在运行的程序的标准输出?