如何在控制台中读取 while true 进程的输出?
对于代码
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 时,我无法看到我的输出,直到我真正结束这个过程。
我可以有类似冲洗概念的东西吗?
For the code
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";
If my $cmd is "ls", then $stdout can have a correct output.
However, if my $cmd is "perl whileTrue.pl", then how can I have the output while running the perl? In whileTrue.pl, it will print my input in console.
Because if I not ssh to run it, the output will print to the console. However, when I ssh it, I cannot see my output until I really end this process.
Can I have something like flush concept?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来像
register_handler
方法允许对输出进行非阻塞处理。Seems like
register_handler
method allows for non-blocking processing of the output.您还可以使用 Net::OpenSSH 代替 Net::SSH::Perl :
You can also use Net::OpenSSH instead of Net::SSH::Perl: