0

我想从标准输出中读取长时间运行的命令。有一个程序,它向我发送一些输出,我必须发送一些响应。

问题是没有任何东西到达输入流。

我在做什么,正在执行命令,从命令中获取 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()始终为零。如果我在没有这种情况的情况下阅读,阅读将永远被阻止。

如何读取正在运行的程序的标准输出?

4

1 回答 1

0

看起来代码很好。问题出在我运行的二进制文件上。出于某种原因,它把它的输出放到了一些深奥的流中。这真的很奇怪,因为在控制台中,当我运行该命令时,我可以看到它的输出,但我无法在任何流上捕获它。将它输送到标准输出也无济于事。

无论如何,问题已解决,二进制已修复。

于 2014-10-23T09:21:19.827 回答