【发布时间】:2015-07-07 20:00:49
【问题描述】:
当我杀死一个使用 ForkManager 的 perl 进程时,我希望所有子进程都死掉。在下面的代码中,如果我运行它并在 sleep 行运行时按 ctrl+c ,则 sleep 进程被终止,但 print 行都是在脚本结束之前同时执行。理想情况下,我希望中断立即停止所有执行。我能做什么?
#!/usr/bin/perl -w
use Parallel::ForkManager;
main {
my $fork1 = new Parallel::ForkManager(8);
while (1) {
$fork1->start and next;
system("sleep 15s");
print "Still going!"
$fork1->finish;
}
fork1->wait_all_children;
}
【问题讨论】:
-
system也分叉了一个进程,我想如果你将system("sleep 15s")更改为 Perl 的sleep 15;你不会看到同样的行为。
标签: perl parallel-processing fork