如何在控制台中读取while true进程的输出?

时间:2011-11-26 05:15:37

标签: perl printing stdout

代码

my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
print "STDOUT: $stdout STDERR: $stderr EXIT: $exit";

如果我的$ cmd是“ls”,那么$ stdout可以有正确的输出。

但是,如果我的$ cmd是“perl whileTrue.pl”,那么在运行perl时如何获得输出?在whileTrue.pl中,它将在控制台中打印我的输入。

因为如果我没有ssh运行它,输出将打印到控制台。但是,当我ssh它时,在我真正结束这个过程之前,我无法看到我的输出。

我可以使用类似冲洗的概念吗?

2 个答案:

答案 0 :(得分:1)

似乎register_handler方法允许对输出进行非阻塞处理。

答案 1 :(得分:0)

您也可以使用Net::OpenSSH代替Net :: SSH :: Perl:

use Net::OpenSSH;
my $ssh = Net::OpenSSH->new($host, user => $user, password => $pass);
$ssh->system($cmd);