【问题标题】:How can I read an output from a while true process in console?如何在控制台中读取 while true 进程的输出?
【发布时间】:2011-11-28 16:43:27
【问题描述】:

代码

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 时,在我真正结束这个过程之前,我看不到我的输出。

我可以有类似同花顺的概念吗?

【问题讨论】:

    标签: perl printing stdout


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多