【发布时间】:2013-12-20 14:16:55
【问题描述】:
我想在我的 Perl-CGI 程序中执行特定命令期间显示一个迭代进度条。我使用CGI::ProgressBar 模块来实现这一点。例如,如果我想在执行 RKHunter 扫描期间显示进度条,这是我编写的代码:
使用 CGI::ProgressBar qw/:standard/; $| = 1;
print progress_bar( -from=>1, -to=>100 );
open(my $quik_rk, '-|', 'rkhunter', '--enable', '"known_rkts"') or print "ERROR RUNNING BASIC ROOTKIT CHECK!!";
# print the progress bar while the command executes
while(<$quik_rk>)
{
print update_progress_bar;
#print "<img src=\"ajax-loader.gif\"></img>";
}
close($quik_rk);
这很好用。但是,我在上面的代码之后立即对另一个命令(使用 Linux Maldet 进行扫描)尝试相同的操作:
open(my $quik_lmd, '-|', 'maldet', '-a', '/home?/?/public_html') or print "ERROR RUNNING BASIC MALWARE CHECK!!";
my $this_ctr = 0;
while(<$quik_lmd>)
{ $this_ctr++;
print update_progress_bar;
}
close($quik_lmd);
进度条不执行,但 te 命令本身在后台运行。
我做错了什么? 有没有更好的方法在 Perl-CGI 中的浏览器上显示进度条?
【问题讨论】:
标签: perl progress-bar cgi