Я хочу, чтобы все дочерние процессы умирали, когда я убивал perl-процесс, который использует ForkManager. В приведенном ниже коде, если я запустил его и ударил ctrl + c В то время как линия сна работает, процесс сна убит, но линии print
затем выполняются одновременно до завершения скрипта. В идеале я хотел бы, чтобы прерывание немедленно прекратило выполнение. Что я могу сделать?ForkManager SIGINT только убивает текущий процесс в fork
#!/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' также порождает процесс, я думаю, если вы измените' систему («15s сна») 'для Перла' сна 15; 'вы не увидите такое же поведение. –